이 섹션에서는 카메라 뷰 및 UI 엘리먼트의 시간 설정과 전환을 관리하기 위해 Verse 장치를 생성하는 방법을 알아봅니다. 이 섹션 끝부분에 있는 전체 스크립트를 복사하여 붙여 넣을 수 있습니다.
타이틀 시퀀스 Verse 장치를 생성하려면 다음 단계를 따릅니다.
- title_sequence 로 명명된 새로운 Verse 장치를 생성하여 레벨에 추가합니다. 단계는 Verse를 사용하여 나만의 장치 만들기를 참고합니다.
- Verse 장치에 다음과 같은 필드를 추가합니다.
SplashScreenGameCamera로 명명된 편집 가능 고정 포인트 카메라 장치 상수입니다. 타이틀 화면을 표시할 카메라가 됩니다.TitleGameCamera로 명명된 편집 가능 고정 포인트 카메라 장치. 게임 타이틀을 표시할 카메라가 됩니다.StartGameDialog로 명명된 편집 가능 팝업 대화창 장치. 플레이어가 게임을 시작하기 위해 선택할 대화창 옵션을 표시합니다.TitleScreen으로 명명된 편집 가능 HUD 메시지 장치. 게임 타이틀 UI를 표시합니다.GameMenuDelay로 명명된 편집 가능 플로트. 게임 메뉴가 나타나기 전에 타이틀 화면이 표시되는 시간을 정의합니다.SplashScreens로 명명된 HUD 메시지 장치의 편집 가능 배열. 타이틀 화면 전에 모든 스플래시 화면을 표시합니다.IntroHUDController로 명명된 편집 가능 HUD 컨트롤러 장치. 인트로 중에 모든 게임 내 UI 엘리먼트를 숨기는 HUD 컨트롤러입니다.GameHUDController로 명명된 편집 가능 HUD 컨트롤러 장치. 게임 시작 시 나타나는 모든 게임 내 UI 엘리먼트를 표시하는 HUD 컨트롤러입니다.GameStart로 명명된 편집 가능 트리거 장치. 게임이 시작 중임을 어떤 장치에 알리는 데 사용할 수 있습니다.
using { /Fortnite.com/Characters } using { /Fortnite.com/Devices } using { /UnrealEngine.com/Temporary/Diagnostics } using { /Verse.org/Simulation } title_sequence:= class(creative_device): # 위에 스플래시 화면을 표시할 게임 카메라입니다. @editable SplashScreenGameCamera:gameplay_camera_fixed_point_device = gameplay_camera_fixed_point_device{} # 위에 게임 타이틀을 표시할 게임 카메라입니다. @editable TitleGameCamera:gameplay_camera_fixed_point_device = gameplay_camera_fixed_point_device{} # 플레이어가 게임을 시작하기 위해 선택할 대화창 옵션입니다. @editable StartGameDialog:popup_dialog_device = popup_dialog_device{} # 표시할 게임 타이틀 화면입니다. @editable TitleScreen:hud_message_device = hud_message_device{} # 게임 메뉴가 나타나기 전에 타이틀 화면이 표시되는 시간입니다. @editable GameMenuDelay:float = 2.5 # 타이틀 화면 이전에 표시할 스플래시 화면입니다. @editable SplashScreens:[]hud_message_device = array{} # 모든 게임 내 UI 엘리먼트를 숨기는 HUD 컨트롤러입니다. @editable IntroHUDController:hud_controller_device = hud_controller_device{} # 게임 시작 시 모든 게임 내 UI 엘리먼트를 표시하는 HUD 컨트롤러입니다. @editable GameHUDController:hud_controller_device = hud_controller_device{} # 모든 장치에 게임이 시작되어야 함을 알리는 메서드입니다. @editable GameStart:trigger_device = trigger_device{} # 실행 중인 게임에서 장치가 시작되면 실행됩니다. OnBegin<override>()<suspends>:void= - suspends 지정자가 있는
ShowTitleAndGameMenu()로 명명된 메서드를 생성합니다. 이 메서드는 타이틀을 위한 카메라와 타이틀 화면을 표시하고, 게임 시작 대화창을 표시하기 전에 GameMenuDelay초 동안 대기하고, 플레이어가 UI에서 게임 시작 버튼을 누르기를 기다립니다.# 타이틀 화면과 게임 시작 옵션을 표시합니다. ShowTitleAndGameMenu()<suspends>:void= # 모든 플레이어에게 타이틀 카메라를 추가합니다. TitleGameCamera.AddToAll() # 타이틀 화면을 표시합니다. TitleScreen.Show() # 게임 시작 옵션을 표시하기 전에 GameMenuDelay초 동안 기다립니다. Sleep(GameMenuDelay) # 게임 시작 메뉴를 표시합니다. StartGameDialog.Show() # 플레이어가 어떤 행동을 하기에 앞서 게임 시작 버튼을 누르기를 기다립니다. StartGameDialog.RespondingButtonEvent.Await() HideTitleAndGameMenu()로 명명된 메서드를 생성합니다. 이 메서드는 타이틀 화면을 숨기고 타이틀에 사용된 카메라를 제거할 것입니다.# 타이틀 화면을 숨기고 모든 플레이어로부터 카메라를 제거합니다. HideTitleAndGameMenu():void= TitleScreen.Hide() TitleGameCamera.RemoveFromAll()ShowSplashScreens()로 명명된 메서드를 생성합니다. 이 메서드는SplashScreens배열에 추가된 모든 HUD 메시지 장치를 대상으로 반복작업하여 스플래시 화면을 표시하고, 속성에서 설정된 스플래시 화면 표시 시간 동안 대기합니다. 모든 스플래시 화면이 표시된 후, 스플래시 화면용 카메라는 비활성화됩니다.# 일련의 스플래시 화면을 표시합니다. ShowSplashScreens()<suspends>:void= # 모든 스플래시 화면을 대상으로 반복작업합니다. for (SplashScreen : SplashScreens): # 각 스플래시 화면을 표시합니다. SplashScreen.Show() # 스플래시 화면이 표시되는 시간 동안 대기합니다. Sleep(SplashScreen.GetDisplayTime()) # 스플래시 화면을 표시하는 데 사용된 게임 카메라를 제거합니다. SplashScreenGameCamera.Disable()ToggleStasisForAllPlayers()로 명명된 메서드를 생성합니다. 이 메서드는ShouldFreeze실행인자가true인 경우 모든 플레이어를 대상으로 반복작업하여 플레이어가 움직일 수 없도록 정지 상태로 만듭니다.ShouldFreeze실행인자가false인 경우 플레이어가 다시 움직일 수 있도록 정지 상태를 해제합니다.# 플레이어 정지 상태를 토글합니다. # ShouldFreeze가 true일 때 모든 플레이어가 정지 상태에 놓입니다. # ShouldFreeze가 false일 때 모든 플레이어의 정지 상태가 해제됩니다. ToggleStasisForAllPlayers(ShouldFreeze:logic):void= for: Player : GetPlayspace().GetPlayers() Character := Player.GetFortCharacter[] do: if (ShouldFreeze?): # 플레이어를 정지 상태로 만들고 회전이나 이모트 사용을 허용하지 않습니다. Character.PutInStasis(stasis_args{AllowFalling := true, AllowTurning := false, AllowEmotes := false}) else: # 플레이어의 정지 상태를 해제합니다. Character.ReleaseFromStasis()OnBegin()을 업데이트하여 다음 작업을 수행합니다.IntroHUDController.Enable()로 인트로에 HUD 컨트롤러를 활성화하여 모든 게임 내 UI 엘리먼트를 숨깁니다.ToggleStasisForAllPlayers(true)로 플레이어가 인트로 중에 움직일 수 없도록 정지 상태로 만듭니다.ShowSplashScreens()로 스플래시 화면의 시퀀스를 표시합니다.- defer 표현식을 사용하고
HideTitleAndGameMenu()를 호출하여 이OnBegin()함수의 맨 마지막에 타이틀 및 게임 메뉴를 숨깁니다. ShowTitleAndGameMenu()로 타이틀 및 게임 메뉴를 표시합니다.ToggleStasisForAllPlayers(false)로 플레이어의 정지 상태를 해제합니다.- 인트로 HUD의 HUD 컨트롤러를 실제 게임 HUD로 교체합니다.
- 마지막으로
GameStart.Trigger()를 호출하여 듣고 있는 모든 장치에 게임이 시작 중임을 알립니다.# 실행 중인 게임에서 장치가 시작되면 실행됩니다. OnBegin<override>()<suspends>:void= IntroHUDController.Enable() # 모든 것이 초기화되도록 한 번의 시뮬레이션 업데이트를 기다립니다. Sleep(0.0) # 플레이어가 움직일 수 없도록 플레이어를 정지 상태로 만듭니다. ToggleStasisForAllPlayers(true) # 일련의 스플래시 화면을 표시합니다. ShowSplashScreens() # 마지막 순간에 타이틀 및 게임 메뉴를 숨깁니다. # 이 defer는 현재의 코드 블록에서 나갈 때 # GameStart.Trigger() 이후 이 OnBegin 함수의 끝에서 실행됩니다. defer: HideTitleAndGameMenu() # 타이틀 및 게임 메뉴를 표시합니다. ShowTitleAndGameMenu() # 플레이어가 다시 움직일 수 있도록 정지 상태를 해제합니다. ToggleStasisForAllPlayers(false) # HUD 컨트롤러를 실제 게임 HUD로 변경합니다. IntroHUDController.Disable() GameHUDController.Enable() # 듣고 있는 모든 장치에 게임이 지금 시작되어야 함을 알립니다! GameStart.Trigger()
- Verse 파일을 저장하고 코드를 컴파일하여 레벨의 Verse 장치를 업데이트합니다.
전체 스크립트
다음은 타이틀 시퀀스 Verse 장치의 전체 코드입니다.
using { /Fortnite.com/Characters }
using { /Fortnite.com/Devices }
using { /UnrealEngine.com/Temporary/Diagnostics }
using { /Verse.org/Simulation }
title_sequence := class(creative_device):
# 위에 스플래시 화면을 표시할 게임 카메라입니다.
@editable
SplashScreenGameCamera:gameplay_camera_fixed_point_device = gameplay_camera_fixed_point_device{}
# 위에 게임 타이틀을 표시할 게임 카메라입니다.
@editable
TitleGameCamera:gameplay_camera_fixed_point_device = gameplay_camera_fixed_point_device{}
# 플레이어가 게임을 시작하기 위해 선택할 대화창 옵션입니다.
@editable
StartGameDialog:popup_dialog_device = popup_dialog_device{}
# 표시할 게임 타이틀 화면입니다.
@editable
TitleScreen:hud_message_device = hud_message_device{}
# 게임 메뉴가 나타나기 전에 타이틀 화면이 표시되는 시간입니다.
@editable
GameMenuDelay:float = 2.5
# 타이틀 화면 이전에 표시할 스플래시 화면입니다.
@editable
SplashScreens:[]hud_message_device = array{}
# 모든 게임 내 UI 엘리먼트를 숨기는 HUD 컨트롤러입니다.
@editable
IntroHUDController:hud_controller_device = hud_controller_device{}
# 게임 시작 시 모든 게임 내 UI 엘리먼트를 표시하는 HUD 컨트롤러입니다.
@editable
GameHUDController:hud_controller_device = hud_controller_device{}
# 모든 장치에 게임이 시작되어야 함을 알리는 메서드입니다.
@editable
GameStart:trigger_device = trigger_device{}
OnBegin<override>()<suspends>:void=
IntroHUDController.Enable()
# 모든 것이 초기화되도록 한 번의 시뮬레이션 업데이트를 기다립니다.
Sleep(0.0)
# 플레이어가 움직일 수 없도록 플레이어를 정지 상태로 만듭니다.
ToggleStasisForAllPlayers(true)
# 일련의 스플래시 화면을 표시합니다.
ShowSplashScreens()
# 마지막 순간에 타이틀 및 게임 메뉴를 숨깁니다.
# 이 defer는 현재의 코드 블록에서 나갈 때
# GameStart.Trigger() 이후 이 OnBegin 함수의 끝에서 실행됩니다.
defer:
HideTitleAndGameMenu()
# 타이틀 및 게임 메뉴를 표시합니다.
ShowTitleAndGameMenu()
# 플레이어가 다시 움직일 수 있도록 정지 상태를 해제합니다.
ToggleStasisForAllPlayers(false)
# HUD 컨트롤러를 실제 게임 HUD로 변경합니다.
IntroHUDController.Disable()
GameHUDController.Enable()
# 듣고 있는 모든 장치에 게임이 지금 시작되어야 함을 알립니다!
GameStart.Trigger()
# 타이틀 화면과 게임 시작 옵션을 표시합니다.
ShowTitleAndGameMenu()<suspends>:void=
# 모든 플레이어에게 타이틀 카메라를 추가합니다.
TitleGameCamera.AddToAll()
# 타이틀 화면을 표시합니다.
TitleScreen.Show()
# 게임 시작 옵션을 표시하기 전에 GameMenuDelay초 동안 기다립니다.
Sleep(GameMenuDelay)
# 게임 시작 메뉴를 표시합니다.
StartGameDialog.Show()
# 플레이어가 어떤 행동을 하기에 앞서 게임 시작 버튼을 누르기를 기다립니다.
StartGameDialog.RespondingButtonEvent.Await()
# 타이틀 화면을 숨기고 모든 플레이어로부터 카메라를 제거합니다.
HideTitleAndGameMenu():void=
TitleScreen.Hide()
TitleGameCamera.RemoveFromAll()
# 일련의 스플래시 화면을 표시합니다.
ShowSplashScreens()<suspends>:void=
# 모든 스플래시 화면을 대상으로 반복작업합니다.
for (SplashScreen : SplashScreens):
# 각 스플래시 화면을 표시합니다.
SplashScreen.Show()
# 스플래시 화면이 표시되는 시간 동안 대기합니다.
Sleep(SplashScreen.GetDisplayTime())
# 스플래시 화면을 표시하는 데 사용된 게임 카메라를 제거합니다.
SplashScreenGameCamera.Disable()
# 플레이어 정지 상태를 토글합니다.
# ShouldFreeze가 true일 때 모든 플레이어가 정지 상태에 놓입니다.
# ShouldFreeze가 false일 때 모든 플레이어의 정지 상태가 해제됩니다.
ToggleStasisForAllPlayers(ShouldFreeze:logic):void=
for:
Player : GetPlayspace().GetPlayers()
Character := Player.GetFortCharacter[]
do:
if (ShouldFreeze?):
# 플레이어를 정지 상태로 만들고 회전이나 이모트 사용을 허용하지 않습니다.
Character.PutInStasis(stasis_args{AllowFalling := true, AllowTurning := false, AllowEmotes := false})
else:
# 플레이어의 정지 상태를 해제합니다.
Character.ReleaseFromStasis()