In diesem Abschnitt lernst du, wie du das Verse-Gerät erstellst, um das Timing und die Übergänge für die Kameraansichten und UI-Elemente zu verwalten. Du kannst das abgeschlossene Skript am Ende dieses Abschnitts per Copy-Paste einfügen.
Befolge diese Schritte, um dein Verse-Gerät für die Titelsequenz zu erstellen:
- Erstelle ein neues Verse-Gerät mit dem Namen title_sequence und füge das Gerät zu deinem Level hinzu. Weitere Schritte findest du unter Erstelle dein eigenes Gerät mit Verse.
- Füge die folgenden Felder zu deinem Verse-Gerät hinzu:
- Eine bearbeitbare „Kamera: Fixpunkt“-Gerätekonstante mit dem Namen
SplashScreenGameCamera, gegen welche die Titelbildschirme angezeigt werden sollen. - Ein bearbeitbares „Kamera: Fixpunkt“-Gerät mit dem Namen
TitleGameCamera, gegen die der Spieltitel angezeigt wird. - Ein bearbeitbares Popup-Dialog-Gerät namens
StartGameDialog, das dem Spieler die Option zum Starten des Spiels anzeigt. - Ein bearbeitbares HUD-Nachricht-Gerät namens
TitleScreen, das die Spieltitel-UI anzeigt. - Ein bearbeitbarer Float namens
GameMenuDelay, der definiert, wie lange der Titelbildschirm angezeigt werden soll, bevor das Spielmenü erscheint. - Ein bearbeitbares Array von HUD-Nachrichten-Geräten mit dem Namen
SplashScreens, das alle Begrüßungsbildschirme vor dem Titelbildschirm anzeigt. - Ein bearbeitbares HUD-Controller-Gerät mit dem Namen
IntroHUDController, welches der HUD-Controller ist, um alle UI-Elemente im Spiel während des Intros auszublenden. - Ein bearbeitbares HUD-Controller-Gerät mit dem Namen
GameHUDController, welches der HUD-Controller ist, der alle UI-Elemente im Spiel anzeigt, die beim Spielstart erscheinen. - Ein bearbeitbares Auslöser-Gerät mit dem Namen
GameStart, mit dem du allen Geräten mitteilen kannst, dass das Spiel beginnt.
using { /Fortnite.com/Characters } using { /Fortnite.com/Devices } using { /UnrealEngine.com/Temporary/Diagnostics } using { /Verse.org/Simulation } title_sequence:= class(creative_device): # Spielkamera, auf der Begrüßungsbildschirme angezeigt werden sollen. @editable SplashScreenGameCamera:gameplay_camera_fixed_point_device = gameplay_camera_fixed_point_device{} # Spielkamera, auf welcher der Spieltitel angezeigt werden sollen. @editable TitleGameCamera:gameplay_camera_fixed_point_device = gameplay_camera_fixed_point_device{} # Dialogoption für den Spieler, um das Spiel zu starten. @editable StartGameDialog:popup_dialog_device = popup_dialog_device{} # Spiel-Titelbildschirm, der angezeigt werden soll. @editable TitleScreen:hud_message_device = hud_message_device{} # Wie lange der Titelbildschirm angezeigt werden soll, bevor das Spielmenü erscheint. @editable GameMenuDelay:float = 2.5 # Begrüßungsbildschirme, die vor dem Titelbildschirm angezeigt werden. @editable SplashScreens:[]hud_message_device = array{} # HUD-Controller verbirgt alle In-game-UI-Elemente. @editable IntroHUDController:hud_controller_device = hud_controller_device{} # Alle HUD-Controller zeigen alle In-game-UI-Elemente, wenn das Spiel startet. @editable GameHUDController:hud_controller_device = hud_controller_device{} # Methode, um alle Geräte zu benachrichtigen, dass das Spiel starten soll. @editable GameStart:trigger_device = trigger_device{} # Wird ausgeführt, wenn das Gerät in einem laufenden Spiel gestartet wird OnBegin<override>()<suspends>:void= - Eine bearbeitbare „Kamera: Fixpunkt“-Gerätekonstante mit dem Namen
- Erstelle eine Methode namens
ShowTitleAndGameMenu(), die den Bezeichner suspends hat. Diese Methode zeigt die Kamera für den Titel an, zeigt den Titelbildschirm an, wartet GameMenuDelay Sekunden ab, bevor der Spielstartdialog angezeigt wird, und wartet darauf, dass der Spieler die Schaltfläche „Spiel starten“ der Benutzeroberfläche drückt.# Zeigt den Titelbildschirm und die Option „Spiel starten“ an. ShowTitleAndGameMenu()<suspends>:void= # Titel-Kamera zu allen Spielern hinzufügen. TitleGameCamera.AddToAll() # Zeigt den Titelbildschirm an. TitleScreen.Show() # Warte GameMenuDelay Sekunden, bevor die Option „Spiel starten“ angezeigt wird. Sleep(GameMenuDelay) # Zeige das Menü „Spiel starten“ an. StartGameDialog.Show() # Warte darauf, dass der Spieler auf „Spiel starten“ drückt, bevor etwas anderes getan wird. StartGameDialog.RespondingButtonEvent.Await() - Erstelle eine Methode namens
HideTitleAndGameMenu(). Mit dieser Methode blendest du den Titelbildschirm aus und entfernst die Kamera, die für den Titel verwendet wird.# Blendet den Titelbildschirm aus und entfernt die Kamera von allen Spielern. HideTitleAndGameMenu():void= TitleScreen.Hide() TitleGameCamera.RemoveFromAll() - Erstelle eine Methode mit dem Namen
ShowSplashScreens(). Diese Methode iteriert durch alle HUD-Nachrichtenübermittler-Geräte, die demSplashScreens-Array hinzugefügt wurden, um den Begrüßungsbildschirm anzuzeigen, und wartet so lange, wie der Begrüßungsbildschirm nach seinen Eigenschaften angezeigt werden soll. Nachdem alle Begrüßungsbildschirme angezeigt worden sind, wird die Kamera für die Begrüßungsbildschirme deaktiviert.# Zeige Begrüßungsbildschirme. ShowSplashScreens()<suspends>:void= # Iteriert durch alle Begrüßungsbildschirme. for (SplashScreen : SplashScreens): # Zeige jeden Begrüßungsbildschirm an. SplashScreen.Show() # Warte so lange, wie der Begrüßungsbildschirm angezeigt werden soll. Sleep(SplashScreen.GetDisplayTime()) # Entferne die Spielkamera, die für die Anzeige der Begrüßungsbildschirme verwendet wird. SplashScreenGameCamera.Disable() - Erstelle eine Methode mit dem Namen
ToggleStasisForAllPlayers(). Diese Methode iteriert durch alle Spieler und versetzt sie in Stasis (damit sie sich nicht bewegen können), wenn das ArgumentShouldFreezetrueist, und gibt sie aus der Stasis frei (damit sie sich wieder bewegen können), wenn das ArgumentShouldFreezefalseist.# Spieler-Stasis umschalten. # Wenn ShouldFreeze True ist, werden alle Spieler in Stasis versetzt. # Wenn ShouldFreeze False ist, werden alle Spieler aus Stasis freigegeben. ToggleStasisForAllPlayers(ShouldFreeze:logic):void= for: Player : GetPlayspace().GetPlayers() Character := Player.GetFortCharacter[] do: if (ShouldFreeze?): # Versetze Spieler in Statis und erlaube ihnen nicht, sich zu drehen oder Emotes zu nutzen. Character.PutInStasis(stasis_args{AllowFalling := true, AllowTurning := false, AllowEmotes := false}) else: # Gib Spieler aus Stasis frei. Character.ReleaseFromStasis() - Aktualisiere
OnBegin()zu:- Aktiviere den HUD-Controller für das Intro, um alle UI-Elemente mit
IntroHUDController.Enable()im Spiel auszublenden. - Versetze die Spieler mit
ToggleStasisForAllPlayers(true)in Stasis, damit sie sich während des Intros nicht bewegen können. - Zeige die Sequenz der Begrüßungsbildschirme mit
ShowSplashScreens(). - Blende den Titel und das Spielmenü in der allerletzten Sekunde dieser Funktion
OnBegin()aus, indem du den Ausdruck defer verwendest undHideTitleAndGameMenu()aufrufst. - Zeige den Titel und das Spielmenü mit
ShowTitleAndGameMenu()an. - Gib die Spieler mit
ToggleStasisForAllPlayers(false)aus der Stasis frei. - Tausche die HUD-Controller aus dem Intro-HUD gegen das eigentliche Spiel-HUD aus.
- Zum Schluss rufst du
GameStart.Trigger()auf, um allen Geräten, die zuhören, mitzuteilen, dass das Spiel beginnt.# Wird ausgeführt, wenn das Gerät in einem laufenden Spiel gestartet wird OnBegin<override>()<suspends>:void= IntroHUDController.Enable() # Warte eine Simulationsaktualisierung ab, bis alles initialisiert ist. Sleep(0.0) # Versetze die Spieler in Stasis, damit sie sich nicht bewegen können. ToggleStasisForAllPlayers(true) # Zeige Begrüßungsbildschirme. ShowSplashScreens() # Blende den Titel und das Spielmenü in allerletzter Sekunde aus. # Diese Zurückstellung wird ausgeführt, wenn der aktuelle Code-Block beendet wird, # was das Ende dieser OnBegin-Funktion darstellt, nach GameStart.Trigger(). defer: HideTitleAndGameMenu() # Zeige den Titelbildschirm und das Spielmenü an. ShowTitleAndGameMenu() # Gib die Spieler aus Stasis frei, damit sie sich wieder bewegen können. ToggleStasisForAllPlayers(false) # Wechsle HUD-Controller zum tatsächlichen Spiel-HUD. IntroHUDController.Disable() GameHUDController.Enable() # Benachrichtige alle Geräte, die zuhören, dass das Spiel jetzt starten soll! GameStart.Trigger()
- Aktiviere den HUD-Controller für das Intro, um alle UI-Elemente mit
- Speichere deine Verse-Datei und kompiliere deinen Code, um dein Verse-Gerät im Level zu aktualisieren.
Vollständiges Script
Im Folgenden findest du den vollständigen Code für das Verse-Gerät der Titelsequenz.
using { /Fortnite.com/Characters }
using { /Fortnite.com/Devices }
using { /UnrealEngine.com/Temporary/Diagnostics }
using { /Verse.org/Simulation }
title_sequence := class(creative_device):
# Spielkamera, auf der Begrüßungsbildschirme angezeigt werden sollen.
@editable
SplashScreenGameCamera:gameplay_camera_fixed_point_device = gameplay_camera_fixed_point_device{}
# Spielkamera, auf welcher der Spieltitel angezeigt werden sollen.
@editable
TitleGameCamera:gameplay_camera_fixed_point_device = gameplay_camera_fixed_point_device{}
# Dialogoption für den Spieler, um das Spiel zu starten.
@editable
StartGameDialog:popup_dialog_device = popup_dialog_device{}
# Spiel-Titelbildschirm, der angezeigt werden soll.
@editable
TitleScreen:hud_message_device = hud_message_device{}
# Wie lange der Titelbildschirm angezeigt werden soll, bevor das Spielmenü erscheint.
@editable
GameMenuDelay:float = 2.5
# Begrüßungsbildschirme, die vor dem Titelbildschirm angezeigt werden.
@editable
SplashScreens:[]hud_message_device = array{}
# HUD-Controller verbirgt alle In-game-UI-Elemente.
@editable
IntroHUDController:hud_controller_device = hud_controller_device{}
# Alle HUD-Controller zeigen alle In-game-UI-Elemente, wenn das Spiel startet.
@editable
GameHUDController:hud_controller_device = hud_controller_device{}
# Methode, um alle Geräte zu benachrichtigen, dass das Spiel starten soll.
@editable
GameStart:trigger_device = trigger_device{}
OnBegin<override>()<suspends>:void=
IntroHUDController.Enable()
# Warte eine Simulationsaktualisierung ab, bis alles initialisiert ist.
Sleep(0.0)
# Versetze die Spieler in Stasis, damit sie sich nicht bewegen können.
ToggleStasisForAllPlayers(true)
# Zeige Begrüßungsbildschirme.
ShowSplashScreens()
# Blende den Titel und das Spielmenü in allerletzter Sekunde aus.
# Diese Zurückstellung wird ausgeführt, wenn der aktuelle Code-Block beendet wird,
# was das Ende dieser OnBegin-Funktion darstellt, nach GameStart.Trigger().
defer:
HideTitleAndGameMenu()
# Zeige den Titelbildschirm und das Spielmenü an.
ShowTitleAndGameMenu()
# Gib die Spieler aus Stasis frei, damit sie sich wieder bewegen können.
ToggleStasisForAllPlayers(false)
# Wechsle HUD-Controller zum tatsächlichen Spiel-HUD.
IntroHUDController.Disable()
GameHUDController.Enable()
# Benachrichtige alle Geräte, die zuhören, dass das Spiel jetzt starten soll!
GameStart.Trigger()
# Zeigt den Titelbildschirm und die Option „Spiel starten“ an.
ShowTitleAndGameMenu()<suspends>:void=
# Titel-Kamera zu allen Spielern hinzufügen.
TitleGameCamera.AddToAll()
# Zeigt den Titelbildschirm an.
TitleScreen.Show()
# Warte GameMenuDelay Sekunden, bevor die Option „Spiel starten“ angezeigt wird.
Sleep(GameMenuDelay)
# Zeige das Menü „Spiel starten“ an.
StartGameDialog.Show()
# Warte darauf, dass der Spieler auf „Spiel starten“ drückt, bevor etwas anderes getan wird.
StartGameDialog.RespondingButtonEvent.Await()
# Blendet den Titelbildschirm aus und entfernt die Kamera von allen Spielern.
HideTitleAndGameMenu():void=
TitleScreen.Hide()
TitleGameCamera.RemoveFromAll()
# Zeige Begrüßungsbildschirme.
ShowSplashScreens()<suspends>:void=
# Iteriert durch alle Begrüßungsbildschirme.
for (SplashScreen : SplashScreens):
# Zeige jeden Begrüßungsbildschirm an.
SplashScreen.Show()
# Warte so lange, wie der Begrüßungsbildschirm angezeigt werden soll.
Sleep(SplashScreen.GetDisplayTime())
# Entferne die Spielkamera, die für die Anzeige der Begrüßungsbildschirme verwendet wird.
SplashScreenGameCamera.Disable()
# Spieler-Stasis umschalten.
# Wenn ShouldFreeze True ist, werden alle Spieler in Stasis versetzt.
# Wenn ShouldFreeze False ist, werden alle Spieler aus Stasis freigegeben.
ToggleStasisForAllPlayers(ShouldFreeze:logic):void=
for:
Player : GetPlayspace().GetPlayers()
Character := Player.GetFortCharacter[]
do:
if (ShouldFreeze?):
# Versetze Spieler in Statis und erlaube ihnen nicht, sich zu drehen oder Emotes zu nutzen.
Character.PutInStasis(stasis_args{AllowFalling := true, AllowTurning := false, AllowEmotes := false})
else:
# Gib Spieler aus Stasis frei.
Character.ReleaseFromStasis()