Con i tag di gameplay, puoi individuare gli attori contrassegnati da un tag specifico, mentre la partita è in corso. I tag gameplay ti permettono di utilizzare più attori senza dover impostare le proprietà e assegnare riferimenti in Unreal Editor per Fortnite (UEFN). I tag gameplay vengono creati nel codice Verse e assegnati in UEFN.
L'uso dei tag gameplay può aprire interessanti opportunità di gameplay, come ad esempio:
Alterare l'impostazione del livello senza dover aggiungere o modificare i riferimenti al dispositivo creato da Verse.
Trovare tutti gli attori con un tag specifico e attivarli in base al loro tipo, ad esempio accendendo le luci o attivando/disattivando le barriere.
Cambiare in modo dinamico gli attori attivi man mano che il giocatore avanza nel gioco.
Abilitare in modo condizionale gli attori a una corsa a ostacoli in base a un'opzione di difficoltà selezionata dal giocatore.
Che cosa può essere taggato?
Attualmente i tag gameplay si possono assegnare ai seguenti elementi:
Le sezioni seguenti mostrano come creare e utilizzare i tag gameplay nel tuo progetto.
Creazione di un tag gameplay
Per creare un nuovo tag gameplay utilizzando Verse, attieniti ai seguenti passaggi:
Apri il file Verse in Visual Studio Code con Verse Explorer.
All'inizio del file Verse, aggiungi il seguente codice per abilitare il riferimento alla
classetag.Verseusing { /Verse.org/Simulation/Tags }Crea una nuova classe che eredita dalla classe
tag. Il nome della tua classe determina il nome del tag. In questo esempio, la classe si chiamamytag, quindi il nome del tag gameplay è mytag.Verse# Derive from the `tag` class in the Verse.org/Simulation/Tags module to create a new gameplay tag. mytag := class(tag){}Il tuo file Verse deve essere simile a questo:
Verseusing { /Fortnite.com/Devices } using { /Verse.org/Simulation } using { /Verse.org/Simulation/Tags } # Derive from the `tag` class in the Verse.org/Simulation/Tags module to create a new gameplay tag. mytag := class(tag){}Salva il file di Verse e fai clic su Compila gli script di Verse nella barra degli strumenti UEFN per compilare il codice e utilizzare il nuovo tag gameplay.
I tag gameplay sono etichette gerarchiche. Questi tag possono avere un numero qualsiasi di livelli gerarchici, separati dal carattere _ nel nome della classe.
Quando il nome del tag gameplay viene visualizzato nell'editor, i caratteri _ vengono convertiti in ".".
Ad esempio, un tag gameplay con tre livelli avrebbe il nome di classe family_genus_species e verrebbe visualizzato nell'editor come "family.genus.species", dove "family" è l'identificatore più ampio nella gerarchia e "species" quello più specifico.
Tieni presente che l'esistenza di "family.genus.species" non significa implicitamente che esistano anche i tag gameplay "family.genus" e "family". Per creare i livelli gerarchici, devi creare questi tag gameplay con i nomi delle classi family e family_genus.
Assegnazione di un tag gameplay
Per assegnare un tag gameplay, attieniti ai seguenti passaggi. Questo esempio utilizza un dispositivo, ma i passaggi sono i medesimi per gli altri attori.
In UEFN, da Outliner, seleziona il dispositivo a cui assegnare il tag per aprire il relativo pannello Dettagli. In questo esempio, si tratta di un dispositivo Pulsante.
Nel pannello Dettagli, fai clic su Aggiungi nuovo componente e scegli Tag markup Verse dal menu a tendina.
Seleziona il componente VerseTagMarkup per visualizzare le relative impostazioni nel pannello Dettagli.
In Tag gameplay, modifica la proprietà Tag e aggiungi il tag gameplay. In questo esempio, mytag viene aggiunto al dispositivo.
Puoi aggiungere più tag allo stesso attore in modo che ogni attore possa appartenere a più gruppi contemporaneamente. Se un attore ha più tag, sarà possibile trovarlo in base a qualsiasi tag.
Ad esempio, un attore con i tag mytag1 e mytag2 verrà trovato quando si chiama GetCreativeObjectsWithTag(mytag1{}) o GetCreativeObjectsWithTag(mytag2{}).
Trovare attori con un tag gameplay
Una volta che disponi di attori con tag gameplay assegnati, puoi individuarli in base al tag gameplay durante un gioco utilizzando la funzione Verse GetCreativeObjectsWithTag(). Nell'esempio seguente, chiamando GetCreativeObjectsWithTag(mytag{}) si ottiene TaggedDevices contenente tutti gli attori a cui è assegnato mytag:
TaggedActors := GetCreativeObjectsWithTag(mytag{})La chiamata di funzione GetCreativeObjectsWithTag() restituisce un array di tutti gli oggetti che implementano creative_object_interface. Ad esempio, se hai assegnato mytag sia a un dispositivo Pulsante che a un dispositivo Luce personalizzabile nel livello, questa chiamata di funzione restituirà entrambi i dispositivi.
Puoi convertire il risultato di GetCreativeObjectsWithTag() in una delle sue classi di implementazione (chiamate cast di tipo) utilizzando la sintassi NewObjectReference := object_type_to_cast_to[ObjectReference], dove object_type_to_cast_to è il tipo di oggetto desiderato. Ad esempio, se vuoi spegnere o accendere un dispositivo luce personalizzabile, devi convertire il risultato in customizable_light_device prima di chiamare la funzione TurnOff() o TurnOn().
Il cast di tipo è un'espressione fallibile perché la conversione del tipo non riesce se il dispositivo non può essere convertito in quel tipo, ad esempio se si tratta di un dispositivo di tipo diverso. Ad esempio, non puoi convertire un dispositivo Pulsante in una classe customizable_light_device, perché un dispositivo Pulsante e un dispositivo Luce personalizzabile non sono lo stesso tipo di dispositivo.
Con le espressioni for, è possibile utilizzare le espressioni che possono fallire come filtro e creare nuove variabili da usare nel blocco di codice for. Ad esempio, puoi aggiungere la conversione del tipo di customizable_light_device all'espressione di iterazione presente in for. Poiché il dispositivo sarà convertito in customizable_light_device, potrai utilizzare le funzioni specifiche di questa classe, come ad esempio TurnOff() per spegnere la luce.
TaggedActors := GetCreativeObjectsWithTag(mytag{})
for (TaggedActor : TaggedActors, LightDevice := customizable_light_device[TaggedActor]):
LightDevice.TurnOff()L'esempio seguente mostra come controllare in modo condizionale il tipo di attore e chiamare funzioni diverse in base al tipo. L'esempio verifica se l'attore taggato è un dispositivo Luce personalizzabile che può chiamare TurnOff() per spegnere la luce o se l'attore è un dispositivo Barriera che può chiamare Disable() per spegnerla.
TaggedActors := GetCreativeObjectsWithTag(mytag{})
for (TaggedActor : TaggedActors):
if (LightDevice := customizable_light_device[TaggedActor]):
# If the tagged actor is a Customizable Light device, turn it off
LightDevice.TurnOff()
else if (BarrierDevice := barrier_device[TaggedActor]):
# If the tagged actor is a Barrier device, turn it off
BarrierDevice.Disable()Quando chiami GetCreativeObjectsWithTag(), l'elenco risultante non è ordinato secondo un metodo che puoi conoscere o influenzare in anticipo. Nei casi in cui si aggiungono o si rimuovono attori tra una chiamata e l'altra a GetCreativeObjectsWithTag() utilizzando lo stesso tag, l'elenco risultante potrebbe essere in un ordine diverso per ogni risultato della chiamata.
Se il tuo gioco deve gestire gli attori in un ordine specifico, allora devi utilizzare un array modificabile invece dei tag gameplay, poiché il risultato di GetCreativeObjectsWithTag() è un elenco non ordinato di attori.
Trovare la posizione per tipo con i tag gameplay
Ecco un esempio di come filtrare per tipo gli attori restituiti da GetCreativeObjectsWithTag() e stampare la loro posizione.
# find all actors with the all_tag
AllCreativeObjects : []creative_object_interface := GetCreativeObjectsWithTag(all_tag{})
# Print the position of all creative_prop actors with the all_tag
for (Prop : AllCreativeObjects):
if (Prop := creative_prop[Prop]):
Print("Prop found with all_tag at position: {Prop.GetTransform().Translation}")
# Print the position of all device actors with the all_tag
for (Device:AllCreativeObjects):
Esplorare i tutorial che utilizzano i tag gameplay
I seguenti tutorial mostrano come utilizzare i tag gameplay in un gioco.
Puzzle luci con tag
Crea un puzzle in cui il giocatore deve trovare la giusta combinazione di luci accese e spente per generare un oggetto, utilizzando un dispositivo creato con Verse.