UDN
Search public documentation:
ScaleformQuickStartKR
English Translation
日本語訳
中国翻译
Interested in the Unreal Engine?
Visit the Unreal Technology site.
Looking for jobs and company info?
Check out the Epic games site.
Questions about support via UDN?
Contact the UDN Staff
日本語訳
中国翻译
Interested in the Unreal Engine?
Visit the Unreal Technology site.
Looking for jobs and company info?
Check out the Epic games site.
Questions about support via UDN?
Contact the UDN Staff
스케일폼 GFx 퀵 스타트
문서 변경내역: Jeff Wilson 작성. 홍성진 번역.
개요

씬 셋업
예제 파일 |
---|
UI_QuickStart - 1/4 |
UI_QuickStart - 2/4 |
UI_QuickStart - 3/4 |
UI_QuickStart - 4/4 |
UI_QuickStart AS3 version (part 1 of 2) |
UI_QuickStart AS3 version (part 2 of 2) |


- 커서 무비클립을 선택하고 F9 키를 눌러 ActionScript 에디터를 엽니다.
- 아래 코드를 추가합니다:
onClipEvent(enterFrame) { _X = _root._xmouse; _y = _root._ymouse; }
- Library 패널에서 이미지를 선택하고, 우클릭한 다음, Properties 를 선택합니다.
- Bitmap properties 대화창에서 Allow Smoothing 을 체크하고 Compression 을 Loseless (PNG/GIF) 로 설정합니다.
-
버튼을 클릭하여 고급 프로퍼티를 표시합니다.
- Linkage 섹션에서 Export for ActionScript 를 켜고, Identifier 필드에 있는 이미지 이름에서 (마침표를 포함해) 파일 확장자를 지웁니다.
-
버튼을 클릭해 변경내용을 저장합니다.
- 마지막으로 원본 소스 이미지 파일은 SWF 파일과 같은 이름의 폴더(SWF 파일과 같은 디렉토리)에 놓아야 합니다.
씬 임포트

[GameName]\Flash
폴더 내 언리얼로 임포트시키려는 .swf 파일의 패키지 이름으로 된 폴더 안에 있어야 합니다. 이 폴더는 .swf 파일이 임포트될 패키지에 정확히 일치되며, 임포트 도중 변경할 수 없습니다. 선택적으로 이 패키지 안에 하위폴더를 두어 패키지 안에 그룹을 나타낼 수 있습니다.

- 언리얼 에디터를 열고 콘텐츠 브라우저로 가서
버튼을 클릭합니다.
- 열리는 파일 브라우저의 파일 종류 필터를 SWF Movie (.swf) 로 변경한 다음 퍼블리싱된 .swf 파일 위치로 이동합니다.
- 파일을 선택하고
버튼을 클릭합니다.
- 임포트 대화창의 패키지, 그룹, 이름 필드가 모두 채워져 회색으로 표시됩니다.
디폴트 세팅으로 잘 돌아갈 것입니다.버튼을 눌러 씬을 임포트합니다.
- 임포트 프로세스가 완료되면 거기 들어있는 SWF 와 이미지가 전부 콘텐츠 브라우저에 나타날 것입니다.
씬 연결
Movie
프로퍼티를 통해 SWF 파일과 연관되고, 그 이후 이벤트를 받고 명령을 전달함은 물론, 연관된 UI 내 엘리먼트에 접근하기도 합니다.
막 시작하려는 경우 UnrealScript 프로젝트를 새로 추가하는 법에 대한 정보는 Custom UnrealScript Projects KR 페이지를 참고하시기 바랍니다.
벌어지는 기본적인 프로세스는:
- 무비 플레이어가 무비를 시작시킵니다. -
Start()
- 무비 플레이어가 초기화(initialize)됩니다. -
Advance()
- enableInitCallback 가 켜진 엘리먼트 전부에 대해 WidgetInitialized 가 호출됩니다.
- 필요한 위젯에 리퍼런스가 저장됩니다. 즉 씬 안에 접근해야 하는 오브젝트는 리퍼런스를 저장해야 합니다.
- 버튼의 클릭 이벤트에 대한 델리게이트가 할당됩니다. 버튼에 대한 WidgetInitialized 에 전달된 위젯이 이벤트 리스너를 추가시킬 수 있는 GFxCLICKWidget 가 되도록 하기 위해 위젯 바인딩 을 사용합니다.
- 버튼이 눌리면 델리게이트가 호출됩니다.
- SaveButton - 플레이어가 입력한 정보를 토대로 메시지가 변합니다.
- ExitButton - UI 가 닫힙니다.
class UIScene_Profile extends GFxMoviePlayer; /** UI 에 메시지를 표시하는 데 사용된 라벨로의 리퍼런스 */ var GFxObject MessageLabel; /** 플레이어의 이름을 입력하는 데 사용된 텍스트 필드로의 리퍼런스 */ var GFxObject PlayerText; /** 플레이어의 호칭을 입력하는 데 사용된 텍스트 필드로의 리퍼런스 */ var GFxObject TitleText; /** 플레이어의 클랜을 입력하는 데 사용된 텍스트 필드로의 리퍼런스 */ var GFxObject ClanText; /** 프로파일 정보를 저장하는 데 사용된 버튼으로의 리퍼런스. GFxCLIKWidget 을 기대하므로 위젯 바인딩을 추가해야 함 */ var GFxCLIKWidget SaveButton; /** UI 를 닫는 데 사용된 버튼으로의 리퍼런스. GFxCLIKWidget 을 기대하므로 위젯 바인딩을 추가해야 함 */ var GFxCLIKWidget ExitButton; // 무비를 시작하기 위해 UI 가 열렸을 때 호출 function bool Start(optional bool StartPaused = false) { // 무비 재생 시작 Super.Start(); // 무비의 모든 오브젝트 초기화 Advance(0); return true; } // 무비에 enableInitCallback 가 켜진 오브젝트 각각에 대해 자동으로 콜백 호출 event bool WidgetInitialized(name WidgetName, name WidgetPath, GFxObject Widget) { // 어느 위젯이 초기화되었는지 알아내어 적절히 처리 switch(Widgetname) { case 'messageLabel': // 플레이어한테 메시지를 표시하는 라벨로의 리퍼런스 저장 MessageLabel = Widget; break; case 'playerText': // 플레이어의 이름에 대한 텍스트 필드로의 리퍼런스 저장 PlayerText = Widget; break; case 'titleText': // 플레이어의 칭호에 대한 텍스트 필드로의 리퍼런스 저장 TitleText = Widget; break; case 'clanText': // 플레이어의 클랜에 대한 텍스트 필드로의 리퍼런스 저장 ClanText = Widget; break; case 'saveButton': // 프로파일 정보를 저장하는 버튼에 대한 리퍼런스 저장 // 이벤트 리스너를 허용하기 위해 Widget 을 GFxCLIKWidget 으로 형 변환. WidgetBindings 참고 SaveButton = GFxCLIKWidget(Widget); // 버튼이 눌렸을 때에 대한 델리게이트 추가 SaveButton.AddEventListener('CLIK_click', SavePlayerData); break; case 'exitButton': // UI 를 닫는 버튼으로의 리퍼런스 저장 // 이벤트 리스너를 허용하기 위해 Widget 을 GFxCLIKWidget 으로 형 변환. WidgetBindings 참고 ExitButton = GFxCLIKWidget(Widget); // 이 버튼이 눌렸을 때에 대한 델리게이트 추가 ExitButton.AddEventListener('CLIK_click', CloseMovie); break; default: // 찾는 위젯이 아니면 통과 return Super.WidgetInitialized(Widgetname, WidgetPath, Widget); } return false; } // 입력된 데이터를 사용하여 메시지를 바꾸기 위해 추가된 델리게이트 //게임 실제 상황에서 이 데이터는 어딘가에 저장 function SavePlayerData(EventData data) { // 왼쪽 마우스 버튼에만 if(data.mouseIndex == 0) { // 입력된 프로파일 정보를 사용하여 메시지 라벨의 텍스트 프로퍼티 설정 MessageLabel.SetString("text", "Welcome,"@PlayerText.GetString("text")@"("$TitleText.GetString("text")@"in"@ClanText.GetString("text")$")"); } } // 무비를 닫기 위해 추가된 델리게이트 function CloseMovie(EventData data) { // 왼쪽 마우스 버튼에만 if(data.mouseIndex == 0) { // UI 닫기 Close(); } } defaultproperties { // 사용할 임포트된 SWF MovieInfo=SwfMovie'UDNHud.UI_QuickStart' // 버튼에 대한 WidgetInitialized 에 전달된 Widget 이 // GFxCLICKWidget 이 되도록 위젯 바인딩 설정 WidgetBindings.Add((WidgetName="saveButton",WidgetClass=class'GFxCLIKWidget')) WidgetBindings.Add((WidgetName="exitButton",WidgetClass=class'GFxCLIKWidget')) // 무비에 대한 프로퍼티 설정을 // TimingMode=TM_Real 로 하여 게임이 일시정지된 동안 메뉴가 실행되도록 bDisplayWithHudOff=TRUE TimingMode=TM_Real bPauseGameWhileActive=TRUE bCaptureInput=true }
씬 테스트
- Level Loaded (New Event > Level Loaded) 이벤트와 Open GFx Movie (New Action > GFx UI > Open GFx Movie) 액션을 추가합니다.
- Level Loaded 이벤트의 Beginning of Level 출력을 Open GFx Movie 액션의 In 입력에 연결합니다.
- 콘텐츠 브라우저에서 임포트된 SWF 를 선택하고 Open GFx Movie 액션의 프로퍼티에서
버튼을 눌러 Movie 프로퍼티를 SWF 에 할당합니다.
- Movie Player Class 를 예전 섹션의 클래스로, 이 경우
UIScene_Profile
로 설정합니다. 예전 단계에서 할당된 무비를 구동시키는 클래스입니다. - (메뉴이지 HUD 는 아니라 가정하고) Take Focus 와 Capture Input 프로퍼티를 켜서 메뉴에 포커스를 주고 입력을 받을 수 있도록 합니다.



