W tej części dowiesz się, jak utworzyć urządzenie Verse, aby zarządzać czasem i przejściami dla widoków kamery i elementów UI. Możesz skopiować i wkleić kompletny skrypt na końcu tej sekcji.
Aby utworzyć urządzenie Verse sekwencji tytułowej, wykonaj następujące instrukcje:
- Utwórz nowe urządzenie Verse o nazwie title_sequence i dodaj je do poziomu. Aby poznać kroki, patrz Tworzenie własnego urządzenia przy użyciu Verse.
- Dodaj następujące pola do urządzenia Verse:
- Edytowalna stała urządzenia kamery o stałym punkcie widzenia o nazwie
SplashScreenGameCamera, która będzie kamerą do wyświetlania ekranów tytułowych. - Edytowalne urządzenie kamery o stałym punkcie widzenia o nazwie
TitleGameCamera, która będzie kamerą do wyświetlania ekranu tytułowego gry. - Edytowalne urządzenie okna dialogowego o nazwie
StartGameDialog, które wyświetli graczowi opcję rozpoczęcia gry w oknie dialogowym. - Edytowalne urządzenie komunikatów w interfejsie o nazwie
TitleScreen, które wyświetli UI ekranu tytułowego gry. - Edytowalna wartość pojedynczej precyzji (float) o nazwie
GameMenuDelay, która określa czas wyświetlania ekranu tytułowego przed pojawieniem się menu gry. - Edytowalna tablica urządzeń komunikatów w interfejsie o nazwie
SplashScreens, która wyświetli wszystkie ekrany powitalne przed ekranem tytułowym. - Edytowalne urządzenie sterownika interfejsu o nazwie
IntroHUDController, które jest sterownikiem interfejsu ukrywającym wszystkie elementy UI w grze podczas intro. - Edytowalne urządzenie sterownika interfejsu o nazwie
GameHUDController, które jest sterownikiem interfejsu wyświetlającym wszystkie elementy UI w grze, które pojawiają się po uruchomieniu gry. - Edytowalne urządzenie aktywatora o nazwie
GameStart, którego można użyć do powiadomienia dowolnego urządzenia o rozpoczęciu gry.
using { /Fortnite.com/Characters } using { /Fortnite.com/Devices } using { /UnrealEngine.com/Temporary/Diagnostics } using { /Verse.org/Simulation } title_sequence:= class(creative_device): # Kamera gry do wyświetlania ekranów powitalnych. @editable SplashScreenGameCamera:gameplay_camera_fixed_point_device = gameplay_camera_fixed_point_device{} # Kamera gry do wyświetlania ekranów tytułowych. @editable TitleGameCamera:gameplay_camera_fixed_point_device = gameplay_camera_fixed_point_device{} # Opcja wyboru rozpoczęcia gry przez gracza w oknie dialogowym. @editable StartGameDialog:popup_dialog_device = popup_dialog_device{} # Ekran tytułowy gry do wyświetlenia. @editable TitleScreen:hud_message_device = hud_message_device{} # Jak długo ekran tytułowy powinien być wyświetlany przed pojawieniem się menu gry. @editable GameMenuDelay:float = 2.5 # Ekrany powitalne wyświetlane przed ekranem tytułowym. @editable SplashScreens:[]hud_message_device = array{} # Sterownik interfejsu ukrywający wszystkie elementy UI w grze. @editable IntroHUDController:hud_controller_device = hud_controller_device{} # Sterownik interfejsu pokazujący wszystkie elementy UI w grze po uruchomieniu gry. @editable GameHUDController:hud_controller_device = hud_controller_device{} # Metoda służąca do powiadamiania urządzeń o rozpoczęciu gry. @editable GameStart:trigger_device = trigger_device{} # Działa po uruchomieniu urządzenia w aktywnej grze OnBegin<override>()<suspends>:void= - Edytowalna stała urządzenia kamery o stałym punkcie widzenia o nazwie
- Utwórz metodę o nazwie
ShowTitleAndGameMenu(), nadając jej specyfikator suspends. Ta metoda pokaże kamerę dla ekranu tytułowego, wyświetli ekran tytułowy, odczeka liczbę sekund określoną w GameMenuDelay przed wyświetleniem okna dialogowego rozpoczęcia gry i poczeka, aż gracz naciśnie przycisk rozpoczęcia gry w UI.# Wyświetla ekran tytułowy i opcję Rozpocznij grę. ShowTitleAndGameMenu()<suspends>:void= # Dodaj kamerę ekranu tytułowego dla wszystkich graczy. TitleGameCamera.AddToAll() # Pokaż ekran tytułowy. TitleScreen.Show() # Odczekaj liczbę sekund określoną w GameMenuDelay przed wyświetleniem opcji Rozpocznij grę. Sleep(GameMenuDelay) # Wyświetl menu rozpoczęcia gry StartGameDialog.Show() # Poczekaj, aż gracz naciśnie przycisk Rozpocznij grę, zanim cokolwiek zrobisz. StartGameDialog.RespondingButtonEvent.Await() - Utwórz metodę o nazwie
HideTitleAndGameMenu(). Ta metoda spowoduje ukrycie ekranu tytułowego i usunięcie kamery używanej do wyświetlania tytułu.# Ukryj ekran tytułowy i usuń kamerę z pola widzenia wszystkich graczy. HideTitleAndGameMenu():void= TitleScreen.Hide() TitleGameCamera.RemoveFromAll() - Utwórz metodę o nazwie
ShowSplashScreens(). Ta metoda będzie iterować po wszystkich urządzeniach komunikatów w interfejsie dodanych do tablicySplashScreensw celu wyświetlenia ekranu powitalnego i czekać przez czas przewidziany dla wyświetlania ekranu powitalnego w jego właściwościach. Po wyświetleniu wszystkich ekranów powitalnych kamera dla ekranów powitalnych zostaje wyłączona.# Pokaż serię ekranów powitalnych. ShowSplashScreens()<suspends>:void= # Iteruje po wszystkich ekranach powitalnych. for (SplashScreen : SplashScreens): # Pokaż każdy ekran powitalny. SplashScreen.Show() # Czekaj przez czas przewidziany dla wyświetlania ekranu powitalnego. Sleep(SplashScreen.GetDisplayTime()) # Usuń kamerę gry używaną do wyświetlania ekranów powitalnych. SplashScreenGameCamera.Disable() - Utwórz metodę o nazwie
ToggleStasisForAllPlayers(). Ta metoda iteruje po wszystkich graczach i wprowadza ich w tryb stazy (aby nie mogli się poruszać), jeśli argumentShouldFreezema wartośćtrue, i uwalnia ich z trybu stazy (aby mogli się ponownie poruszać), jeśli argumentShouldFreezema wartośćfalse.# Przełącz tryb stazy gracza. # Gdy ShouldFreeze ma wartość true, wszyscy gracze zostaną wprowadzeni do trybu stazy. # Gdy ShouldFreeze ma wartość false, wszyscy gracze zostaną uwolnieni z trybu stazy. ToggleStasisForAllPlayers(ShouldFreeze:logic):void= for: Player : GetPlayspace().GetPlayers() Character := Player.GetFortCharacter[] do: if (ShouldFreeze?): # Umieść gracza w trybie stazy i nie pozwól mu się obracać ani reagować. Character.PutInStasis(stasis_args{AllowFalling := true, AllowTurning := false, AllowEmotes := false}) else: # Zwolnij gracza z trybu stazy. Character.ReleaseFromStasis() - Zaktualizuj metodę
OnBegin()w taki sposób:- Włączyć sterownik interfejsu dla intro, aby ukryć wszystkie elementy UI w grze za pomocą
IntroHUDController.Enable(). - Umieścić graczy w trybie stazy, aby nie mogli się poruszać podczas intro za pomocą
ToggleStasisForAllPlayers(true). - Pokazać sekwencję ekranów powitalnych za pomocą
ShowSplashScreens(). - Ukryć tytuł i menu gry w ostatniej sekundzie funkcji
OnBegin(), używając wyrażenia defer i wywołującHideTitleAndGameMenu(). - Wyświetlić tytuł i menu gry za pomocą
ShowTitleAndGameMenu(). - Zwolnić graczy z trybu stazy za pomocą
ToggleStasisForAllPlayers(false). - Zamienić sterowniki interfejsu z interfejsu intro na interfejs faktycznej gry.
- Wywołać
GameStart.Trigger()w celu powiadomienia wszystkich urządzeń nasłuchujących o rozpoczęciu gry.# Działa po uruchomieniu urządzenia w aktywnej grze OnBegin<override>()<suspends>:void= IntroHUDController.Enable() # Odczekaj jedną aktualizację symulacji, aby wszystko zostało zainicjowane. Sleep(0.0) # Umieść graczy w trybie stazy, aby nie mogli się poruszać. ToggleStasisForAllPlayers(true) # Pokaż serię ekranów powitalnych. ShowSplashScreens() # Ukryj tytuł i menu gry w ostatniej sekundzie. # To wyrażenie defer wykonuje się, gdy bieżący blok kodu zostanie zamknięty, # co jest końcem tej funkcji OnBegin, po GameStart.Trigger(). defer: HideTitleAndGameMenu() # Wyświetl tytuł i menu gry. ShowTitleAndGameMenu() # Zwolnij graczy z trybu stazy, aby znów mogli się ruszać. ToggleStasisForAllPlayers(false) # Zamień sterowniki interfejsu na interfejs faktycznej gry. IntroHUDController.Disable() GameHUDController.Enable() # Powiadom wszystkie urządzenia nasłuchujące o rozpoczęciu gry! GameStart.Trigger()
- Włączyć sterownik interfejsu dla intro, aby ukryć wszystkie elementy UI w grze za pomocą
- Zapisz plik Verse i skompiluj kod, aby zaktualizować urządzenie Verse w poziomie.
Kompletny skrypt
Poniżej przedstawiono kompletny kod urządzenia Verse sekwencji tytułowej.
using { /Fortnite.com/Characters }
using { /Fortnite.com/Devices }
using { /UnrealEngine.com/Temporary/Diagnostics }
using { /Verse.org/Simulation }
title_sequence := class(creative_device):
# Kamera gry do wyświetlania ekranów powitalnych.
@editable
SplashScreenGameCamera:gameplay_camera_fixed_point_device = gameplay_camera_fixed_point_device{}
# Kamera gry do wyświetlania ekranów tytułowych.
@editable
TitleGameCamera:gameplay_camera_fixed_point_device = gameplay_camera_fixed_point_device{}
# Opcja wyboru rozpoczęcia gry przez gracza w oknie dialogowym.
@editable
StartGameDialog:popup_dialog_device = popup_dialog_device{}
# Ekran tytułowy gry do wyświetlenia.
@editable
TitleScreen:hud_message_device = hud_message_device{}
# Jak długo ekran tytułowy powinien być wyświetlany przed pojawieniem się menu gry.
@editable
GameMenuDelay:float = 2.5
# Ekrany powitalne wyświetlane przed ekranem tytułowym.
@editable
SplashScreens:[]hud_message_device = array{}
# Sterownik interfejsu ukrywający wszystkie elementy UI w grze.
@editable
IntroHUDController:hud_controller_device = hud_controller_device{}
# Sterownik interfejsu pokazujący wszystkie elementy UI w grze po uruchomieniu gry.
@editable
GameHUDController:hud_controller_device = hud_controller_device{}
# Metoda służąca do powiadamiania urządzeń o rozpoczęciu gry.
@editable
GameStart:trigger_device = trigger_device{}
OnBegin<override>()<suspends>:void=
IntroHUDController.Enable()
# Odczekaj jedną aktualizację symulacji, aby wszystko zostało zainicjowane.
Sleep(0.0)
# Umieść graczy w trybie stazy, aby nie mogli się poruszać.
ToggleStasisForAllPlayers(true)
# Pokaż serię ekranów powitalnych.
ShowSplashScreens()
# Ukryj tytuł i menu gry w ostatniej sekundzie.
# To wyrażenie defer wykonuje się, gdy bieżący blok kodu zostanie zamknięty,
# co jest końcem tej funkcji OnBegin, po GameStart.Trigger().
defer:
HideTitleAndGameMenu()
# Wyświetl tytuł i menu gry.
ShowTitleAndGameMenu()
# Zwolnij graczy z trybu stazy, aby znów mogli się ruszać.
ToggleStasisForAllPlayers(false)
# Zamień sterowniki interfejsu na interfejs faktycznej gry.
IntroHUDController.Disable()
GameHUDController.Enable()
# Powiadom wszystkie urządzenia nasłuchujące o rozpoczęciu gry!
GameStart.Trigger()
# Wyświetla ekran tytułowy i opcję Rozpocznij grę.
ShowTitleAndGameMenu()<suspends>:void=
# Dodaj kamerę ekranu tytułowego dla wszystkich graczy.
TitleGameCamera.AddToAll()
# Pokaż ekran tytułowy.
TitleScreen.Show()
# Odczekaj liczbę sekund określoną w GameMenuDelay przed wyświetleniem opcji Rozpocznij grę.
Sleep(GameMenuDelay)
# Wyświetl menu rozpoczęcia gry
StartGameDialog.Show()
# Poczekaj, aż gracz naciśnie przycisk Rozpocznij grę, zanim cokolwiek zrobisz.
StartGameDialog.RespondingButtonEvent.Await()
# Ukryj ekran tytułowy i usuń kamerę z pola widzenia wszystkich graczy.
HideTitleAndGameMenu():void=
TitleScreen.Hide()
TitleGameCamera.RemoveFromAll()
# Pokaż serię ekranów powitalnych.
ShowSplashScreens()<suspends>:void=
# Iteruje po wszystkich ekranach powitalnych.
for (SplashScreen : SplashScreens):
# Pokaż każdy ekran powitalny.
SplashScreen.Show()
# Czekaj przez czas przewidziany dla wyświetlania ekranu powitalnego.
Sleep(SplashScreen.GetDisplayTime())
# Usuń kamerę gry używaną do wyświetlania ekranów powitalnych.
SplashScreenGameCamera.Disable()
# Przełącz tryb stazy gracza.
# Gdy ShouldFreeze ma wartość true, wszyscy gracze zostaną wprowadzeni do trybu stazy.
# Gdy ShouldFreeze ma wartość false, wszyscy gracze zostaną uwolnieni z trybu stazy.
ToggleStasisForAllPlayers(ShouldFreeze:logic):void=
for:
Player : GetPlayspace().GetPlayers()
Character := Player.GetFortCharacter[]
do:
if (ShouldFreeze?):
# Umieść gracza w trybie stazy i nie pozwól mu się obracać ani reagować.
Character.PutInStasis(stasis_args{AllowFalling := true, AllowTurning := false, AllowEmotes := false})
else:
# Zwolnij gracza z trybu stazy.
Character.ReleaseFromStasis()