Le sezioni seguenti mostrano come aggiungere o rimuovere un widget dalla UI di un giocatore.
Tieni presente che, mentre negli esempi illustrati viene utilizzato un widget di blocco di testo, è sempre possibile utilizzare qualsiasi tipo di widget. Consulta Tipi di widget per tutti i tipi di widget che puoi utilizzare.
Aggiunta di un widget
Questo esempio mostra come aggiungere un widget quando un giocatore interagisce con un dispositivo Pulsante nel livello:
Crea un nuovo dispositivo Verse e aggiungilo al livello. Per informazioni sulla creazione di un nuovo dispositivo in Verse, vedi Creare un dispositivo personalizzato utilizzando Verse.
Apri il file Verse in Visual Studio Code con Verse Explorer.
Aggiungi una proprietà modificabile del dispositivo Pulsante al tuo dispositivo Verse e imposta il riferimento al dispositivo Pulsante nel tuo livello. Per informazioni su come creare proprietà modificabili, vedi Personalizza proprietà del dispositivo.
# Imposta il dispositivo Pulsante nell'editor in modo che faccia riferimento al dispositivo nel livello @editable MyButton : button_device = button_device{}All'inizio del file Verse, aggiungi le seguenti righe per usare l'API UI Verse:
using { /UnrealEngine.com/Temporary/UI } using { /Fortnite.com/UI } using { /UnrealEngine.com/Temporary/SpatialMath}Questa UI è specifica per ciascun giocatore, pertanto dovrai disporre di un riferimento al giocatore per accedere alla sua UI. In questo esempio viene illustrato come visualizzare una UI personalizzata quando il giocatore interagisce con un pulsante, poiché gli eventi dei dispositivi includono un riferimento al giocatore che ha interagito con il dispositivo. Per informazioni su come impostare le sottoscrizioni agli eventi, vedi Interazioni dispositivo di programmazione.
# L'esecuzione avviene quando il dispositivo è avviato in un gioco in esecuzione OnBegin<override>()<suspends> : void = MyButton.InteractedWithEvent.Subscribe(HandleButtonInteraction) # È possibile associare una UI personalizzata a un determinato giocatore e soltanto quel giocatore può vederla HandleButtonInteraction(Agent : agent) : void = # Visualizza l'UIOra puoi chiamare la funzione fallibile
GetPlayerUI[]in un'espressione if per ottenere un riferimento alla UI del giocatore.Verse# A custom UI can only be associated with a specific player, and only that player can see it HandleButtonInteraction(Agent : agent) : void = # Agents can be a player or AI, but you can only get the UI of a player # so you must cast the Agent, who interacted with the Button device, to the player type if (InPlayer := player[Agent], PlayerUI := GetPlayerUI[InPlayer]): # Display UICon il riferimento alla UI del giocatore, puoi chiamare
AddWidget()da aggiungere al tuo widget.Crea un messaggio denominato TextForMyUI con lo specificatore
localizese inizializzalo con la stringa"Hello, world!".hello_world_device := class(creative_device): # Imposta il dispositivo Pulsante nell'editor in modo che faccia riferimento al dispositivo nel livello @editable MyButton : button_device = button_device{} # Un messaggio localizzabile da visualizzare come testo nella UI TextForMyUI<localizes> : message = "Hello, world!"
Quando il tipo è impostato su
message, significa che il testo è localizzabile e che la stringa utilizzata per inizializzare una variabilemessagerappresenta il testo predefinito del messaggio e la lingua associata. Per ulteriori informazioni sul tipomessage, vedi il Riferimento rapido al linguaggio Verse.Quindi, crea un widget di testo con
TextForMyUIcome testo predefinito e aggiungilo alla UI del giocatore.Verse# A custom UI can only be associated with a specific player, and only that player can see it HandleButtonInteraction(Agent : agent) : void = # Agents can be a player or AI, but you can only get the UI of a player # so you must cast the Agent, who interacted with the Button device, to the player type if (InPlayer := player[Agent], PlayerUI := GetPlayerUI[InPlayer]): MyUI : text_block = text_block{DefaultText := TextFOrMyUI} PlayerUI.AddWidget(MyUI)
Di seguito è riportato il codice completo:
Verseusing { /Fortnite.com/Devices } using { /Verse.org/Simulation } using { /UnrealEngine.com/Temporary/UI } using { /Fortnite.com/UI } using { /UnrealEngine.com/Temporary/SpatialMath} hello_world_device := class(creative_device): # Set the Button device in the Editor to reference the device in the level @editableSalva il file di Verse e scegli Verse > Compila il codice Verse nel menu principale di UEFN per aggiornare il dispositivo Verse.
Quando esegui il playtest del tuo livello con questo dispositivo Verse, il testo "Hello, world!" viene visualizzato nell'angolo in alto a sinistra dello schermo quando il giocatore interagisce con il dispositivo Pulsante.
Rimozione di un widget
Questo esempio mostra come rimuovere la UI dallo schermo del giocatore quando interagisce di nuovo con il dispositivo Pulsante:
Apri il file Verse creato in Aggiunta di un widget.
Per rimuovere il widget in un secondo momento, quando il giocatore interagisce di nuovo con il pulsante, devi memorizzare il widget in una variabile in modo da potervi fare riferimento in seguito. Poiché i widget vengono visualizzati soltanto per giocatore, è necessario memorizzare il widget e associarlo al giocatore a cui viene visualizzato in modo da prendere il widget giusto per il giocatore corretto.
Crea una variabile mappa denominata
MaybeMyUIPerPlayerche utilizzaplayercome keyframe e un blocco di testo opzionale come valore del widget nella mappa. (Tieni presente che, mentre in questo esempio viene utilizzato un widget di blocco di testo, è sempre possibile utilizzare qualsiasi tipo di widget.)var MaybeMyUIPerPlayer : [player]?text_block = map{}Quando aggiungi il widget alla UI del giocatore, memorizzalo nella variabile
MaybeMyUIPerPlayerin modo da poterlo rimuovere successivamente dallo schermo. Poiché l'accesso a un elemento in una mappa è una espressione fallibile, l'impostazione del valore del widget in relazione al giocatore deve essere chiamata in un contesto di errore, come nel caso di un'espressioneif.Verse# A custom UI can only be associated with a specific player, and only that player can see it HandleButtonInteraction(Agent : agent) : void = # Agents can be a player or AI, but you can only get the UI of a player # so you must cast the Agent, who interacted with the Button device, to the player type if (InPlayer := player[Agent], PlayerUI := GetPlayerUI[InPlayer]): NewUI := text_block{DefaultText := TextForMyUI} PlayerUI.AddWidget(NewUI) if (set MaybeMyUIPerPlayer[InPlayer] = option{NewUI}) {}Ora aggiorna la funzione per verificare se il giocatore ha già un widget visualizzato in
MaybeMyUIPerPlayer. In caso affermativo, rimuovi il widget. In caso contrario, crea un nuovo widget da visualizzare.Verse# A custom UI can only be associated with a specific player, and only that player can see it HandleButtonInteraction(Agent : agent) : void = # Agents can be a player or AI, but you can only get the UI of a player # so you must cast the Agent, who interacted with the Button device, to the player type if (InPlayer := player[Agent], PlayerUI := GetPlayerUI[InPlayer]): if (MyUI := MaybeMyUIPerPlayer[InPlayer]?): PlayerUI.RemoveWidget(MyUI) if (set MaybeMyUIPerPlayer[InPlayer] = false) {} else: NewUI := text_block{DefaultText := TextForMyUI}Di seguito è riportato il codice completo:
Verseusing { /Fortnite.com/Devices } using { /Verse.org/Simulation } using { /UnrealEngine.com/Temporary/UI } using { /Fortnite.com/UI } using { /UnrealEngine.com/Temporary/SpatialMath} hello_world_device := class(creative_device): # Set the Button device in the Editor to reference the device in the level @editableSalva il file Verse e scegli Verse > Compila il codice Verse nel menu principale di UEFN per aggiornare il dispositivo Verse.
Quando esegui il playtest del tuo livello con questo dispositivo Verse, il testo "Hello, world!" viene visualizzato nell'angolo in alto a sinistra dello schermo quando il giocatore interagisce per la prima volta con il dispositivo Pulsante. Il testo scompare quando il giocatore interagisce di nuovo con il dispositivo Pulsante.