안기훈_자료_보존용_계정 MYPI

안기훈_자료_보존용_계정
접속 : 2875   Lv. 49

Category

Profile

Counter

  • 오늘 : 264 명
  • 전체 : 242976 명
  • Mypi Ver. 0.3.1 β
[Unreal 게시판] scaleform에서 level 열기 (0) 2014/06/02 PM 08:54
Question>

scaleform으로 main menu를 만들고, kismet으로 불러와서 띄웠음.^^

main menu에 'start'라는 button을 만들었고,
이 button을 아래와 같이 연결했음.



class SFMenuTutorial extends GFxMoviePlayer;

var GFxClikWidget StartButton;
var GFxObject MainMenuTitle;

(중략)

event bool WidgetInitialized(name WidgetName, name WidgetPath, GFxObject Widget)
{
switch(WidgetName)
{
case ('startBtn'):
StartButton = GFxClikWidget(Widget);
StartButton.AddEventListener('CLIK_press', OnStartButtonPressed);
break;
default:
break;
}
return true;
}

function OnStartButtonPressed(GFxClikWidget.EventData ev)
{
ConsoleCommand("open remap-test6");
}

//final function ConsoleCommand(string Cmd, optional bool bWriteToLog)
//{
// if(PlayerOwner != none)
// PlayerOwner.ConsoleCommand(Cmd, bWriteToLog);
//}

(중략)



'start' button을 눌렀을 때, source의 내용대로 'remap-test6'라는 map을 열 수 있었으면 함.
하지만, 위 source는 error가 발생함.-_-;;;;
주석 처리된 부분을 풀어도 error가 발생함.-_-;;;;;;;

main menu도 잘 뜨고, matinee로 camera 이동도 잘 됨.
하지만, 'start' button은 안됨.T_T

'start' button을 눌렀을 때, 'remap-test6'라는
map을 열려면 어떻게 접근해야 하는가?

-------------------------------------------------------------

Answer>

우선 class GFxMoviePlayer는
class Actor를 계승한 class가 아니라 class Object을 계승한 class라는 점을 기억해야 합니다.

그런 특성이 있다 보니,
class GFxMoviePlayer를 계승한 class에서 정의된 모든 함수는
ConsoleCommand()를 직접적으로 호출할 수 없습니다.^^;;;;;;;;;;

따라서,
위 문제를 해결하기 위해 2가지 사실을 이용합니다.

1>유효한 actor를 님의 함수(class GFxMoviePlayer를 계승한 class의 함수)에서
끄집어 내서, 그 Actor의 ConsoleCommand()로 'open'을 호출하면, 원하는 level을 열 수 있습니다.
2>모든 unreal engine의 game은 game이 실행되는 동안
class GameInfo로 정의된 actor를 최소 1개 이상 가지고 있습니다.
그리고, 그 actor는 worldInfo.game에 저장되어 있습니다.

따라서, OnStartButtonPressed() 아래와 같이 수정해 보세요.^^


function OnStartButtonPressed(GFxClikWidget.EventData ev)
{
local GameInfo gi;

foreach class'WorldInfo'.static.GetWorldInfo().AllActors( class'GameInfo', gi )
{
gi.ConsoleCommand( "open remap-test6" );
break;
}
}


위와 같이 해도 안된다면, log 올려 주세요.
하지만, 그럴 일은 없을 거라고 99.99% 확신합니다.^^







Tag:
안기훈, Kee Hoon Ahn, Unreal, UDK, iPhone, iPad, app, 앱, iOS

신고

 
X