Puoi esporre i tuoi asset da UEFN a Verse per utilizzarli nel codice Verse. Questa operazione è chiamata riflessione degli asset e puoi utilizzarla per inserire immagini nella tua UI personalizzata o utilizzare mesh per i tuoi oggetti scenografici personalizzati.
Quando esponi un asset a Verse, il nome dell'asset diventa l'identificatore, simbolo del compilatore, che puoi dunque utilizzare nel codice Verse e puoi accedere all'asset dal relativo percorso Verse. La denominazione degli asset deve seguire le convenzioni e regole di denominazione degli identificatori. Puoi vedere tutti gli asset esposti a Verse nel file Assets.digest.verse del tuo progetto.
Per generare il file Assets.digest.verse, devi avere almeno un file Verse nel progetto prima di compilare il codice Verse.
Ad esempio, se la tua texture ha il nome MyTexture, apparirà nel tuo file Assets.digest.verse come MyTexture<scoped {MyProject}>:texture_2d = external {}.
Quando inserisci gli asset in sottocartelle nella cartella Contenuti del progetto, il nome della sottocartella diventa il nome del modulo Verse. Ad esempio, quando crei una mesh personalizzata denominata MySphere, che si trova nella sottocartella Mesh della cartella Contenuti del progetto, devi qualificare il nome della mesh con il nome del modulo (sottocartella) nel codice, ad esempio Meshes.MySphere.
Attualmente, puoi esporre i seguenti tipi di asset a Verse:
Mesh
Texture
Materiali
Sistemi particellari VFX Niagara
Le sezioni seguenti descrivono come impostare ogni tipo di asset in modo che sia disponibile nel codice Verse.
Mesh
Per fare riferimento a una tua mesh nel codice Verse, segui questi passaggi:
Modella la tua mesh in UEFN o importa una mesh nel tuo progetto.
Gli asset che importi da Fab devono essere aggiunti come asset modificabili di Unreal Engine per essere visualizzati nel file Assets.digest.verse. Al momento non è possibile utilizzare asset referenziati da Fab nel codice Verse.
Salva la mesh scegliendo File > Salva tutto.
Verifica che il nome della mesh sia visualizzato nel file Assets.digest.verse del progetto.
Puoi quindi utilizzare la tua mesh con le API Verse, ad esempio impostandola su un oggetto scenografico di Fortnite Creativo.
L'esempio seguente è un dispositivo creato con Verse che genera un oggetto scenografico all'avvio del gioco. L'esempio utilizza una mesh denominata MySphere che si trovava nella sottocartella Mesh della cartella Contenuti del progetto.
using { /Fortnite.com/Devices }
using { /Verse.org/Simulation }
using { /UnrealEngine.com/Temporary/Diagnostics }
using { /Fortnite.com/UI }
using { /UnrealEngine.com/Temporary/UI }
using { /UnrealEngine.com/Temporary/SpatialMath }
# A Verse-authored creative device that spawns a prop and sets its mesh.
my_device := class(creative_device):
Texture
Per fare riferimento alla tua texture nel codice Verse, segui questi passaggi:
Importa la texture in UEFN.
Gli asset che importi da Fab devono essere aggiunti come asset modificabili di Unreal Engine per essere visualizzati nel file Assets.digest.verse. Al momento non è possibile utilizzare asset referenziati da Fab nel codice Verse.
Salva la texture scegliendo File > Salva tutto.
Verifica che il nome della texture sia visualizzato nel file Assets.digest.verse del progetto.
Puoi quindi utilizzare la tua texture con le API Verse, come ad esempio UI Verse.
Materiali
Per fare riferimento al tuo materiale nel codice Verse, segui questi passaggi:
Crea il tuo materiale in UEFN.
Verifica che il nome del materiale sia visualizzato nel file Assets.digest.verse del progetto.
Puoi quindi utilizzare il tuo materiale con le API Verse, come ad esempio UI Verse e impostare il materiale sugli oggetti scenografici di Fortnite Creativo.
using { /Fortnite.com/Devices }
using { /Verse.org/Simulation }
using { /UnrealEngine.com/Temporary/Diagnostics }
using { /UnrealEngine.com/Temporary/SpatialMath }
my_device := class(creative_device):
# Runs when the device is started in a running game
OnBegin<override>()<suspends>:void=
SpawnLocation := transform:
Parametri del materiale
Quando crei un materiale e vi aggiungi parametri, questi parametri sono visualizzati come campi nella classe del materiale del file Assets.digest.verse. Quando imposti il materiale su una mesh, puoi modificare i parametri del materiale in Verse al runtime.
I seguenti tipi di parametri del materiale possono essere esposti in Verse:
| Parametri del materiale | Tipo Verse | Descrizione |
|---|---|---|
Un singolo valore in virgola mobile. | ||
Parametro per accedere e impostare la texture di un materiale. | ||
La struttura del |
L'esempio seguente utilizza un materiale denominato ConcreteMaterial con un parametro vector4 denominato MyRandomColor.
Questo è ciò che viene visualizzato nel file Assets.digest.verse per questo materiale:
ConcreteMaterial_material<scoped {ParameterizedMaterialsTest}> := class<final><public>(material):
var Specular:float = external {}
var WorldPositionOffset:color = external {}
var BaseTexture:texture = external {}
ConcreteMaterial<scoped {ParameterizedMaterialsTest}>:material = external {}Per poter accedere e aggiornare i parametri di questo materiale, occorre prima istanziare il materiale nel codice Verse. Nell'esempio seguente, il materiale viene istanziato e poi impostato su una mesh prima che i parametri vengano modificati.
using { /Fortnite.com/Devices }
using { /Verse.org/Colors }
using { /Verse.org/Random }
using { /Verse.org/Simulation }
using { /UnrealEngine.com/Temporary/Diagnostics }
using { /UnrealEngine.com/Temporary/SpatialMath }
# A Verse-authored creative device that spawns three props and randomly changes their color
material_color_test_device := class(creative_device):
Asset VFX e sistemi particellari
Per fare riferimento al tuo sistema particellare VFX Niagara nel codice Verse, segui questi passaggi:
Crea il tuo sistema particellare in UEFN.
Verifica che il nome del sistema particellare sia visualizzato nel file Assets.digest.verse del progetto.
Puoi quindi generare il sistema particellare utilizzando la funzione SpawnParticleSystem(). L'esempio seguente utilizza un sistema particellare denominato MyParticleSystem che si trovava nella sottocartella VFX della cartella Contenuti del progetto.
using { /Fortnite.com/Devices }
using { /Verse.org/Simulation }
using { /UnrealEngine.com/Assets }
using { /UnrealEngine.com/Temporary/Diagnostics }
# A Verse-authored creative device that spawns a VFX particle system
vfx_test_device := class(creative_device):
# Runs when the device is started in a running game
OnBegin<override>()<suspends>:void=
Limitazioni note
Di seguito, sono elencate le attuali limitazioni relative ai riflessi degli asset:
Quando utilizzi
SetMeshsu un oggetto scenografico, il materiale della nuova mesh potrebbe non essere visualizzato nell'oggetto scenografico perché alcuni oggetti scenografici nel set di strumenti di Fortnite Creativo hanno un materiale di override definito. Se l'oggetto scenografico non ha materiale di override, quando si modifica la mesh, viene utilizzato il materiale della nuova mesh.Assegnare a un asset lo stesso nome di un altro identificatore nel progetto comporterà errori di compilazione. Ad esempio, un progetto con la struttura mostrata di seguito non viene compilato perché esiste un asset chiamato
MyMeshe una cartella chiamataMyMesh. La cartella o l'asset deve essere rinominato per la compilazione del codice.MyFolder /
MyMesh.uasset
MyMesh /
MyOtherMesh.uasset
Risoluzione dei problemi
Se riscontri problemi con l'aggiornamento del file Assets.digest.verse o la compilazione del codice di riflessione dell'asset, prova le soluzioni seguenti.
Non utilizzare parole chiave di Verse come
setoblockcome nome di eventuali asset o cartelle. Il file Assets.digest.verse crea identificatori Verse da questi nomi. L'utilizzo di una parola chiave come identificatore Verse comporta errori di compilazione. Per un elenco delle parole chiave di Verse, vedi la Guida rapida al linguaggio Verse.Non utilizzare i nomi delle API Verse o dei membri API come nome di asset o cartelle. Vedi la Guida API Verse.
Segui le convenzioni di denominazione di Verse quando assegni un nome agli asset e alle cartelle, altrimenti potrebbero essere saltati nella generazione del file digest.
Se stai tentando di fare riferimento a un asset al di fuori del suo modulo, potresti ricevere un errore di accesso. Questo perché i moduli hanno lo
specificatore di accesso<internal> per impostazione predefinita. Per correggere l'errore, devi aggiungere lo specificatore di accesso<public>alla dichiarazione del modulo. Se il modulo è stato specificato creando una cartella nel progetto, è necessario modificare l'accessibilità del modulo nel codice. Ad esempio, nella struttura del progetto seguente,Materials,MesheseTexturessono sottomoduli del moduloWatermelon.MyProject /
MiniGame /
MiniGameAssets /
Watermelon /
Materials /
Meshes /
Watermelon.uasset
Textures /
hello_world_device.verse
Il codice seguente in hello_world_device.verse modifica l'accessibilità al pubblico del modulo Meshes.
MiniGame := module:
MiniGameAssets<public> := module:
Watermelon<public> := module:
Meshes<public> := module {}Ora il file hello_world_device.verse del progetto può fare riferimento a Watermelon.uasset nel codice utilizzando il percorso MiniGame.MiniGameAssets.Watermelon.Meshes.Watermelon.
Se un identificatore causa un errore nel codice Verse, probabilmente si tratta di un errore associato al nome di un asset o di una cartella. Controlla i potenziali nomi di asset e cartelle digitandoli prima come identificatori nel codice.
Abilita riflessione asset
Con il rilascio della versione 26.00, la possibilità di esporre gli asset da UEFN a Verse è abilitata per impostazione predefinita per tutti i progetti UEFN appena creati. Per tutti i progetti creati prima della versione 26.00, è invece necessario abilitare questa funzione attenendosi alla procedura seguente:
Chiudi il progetto in UEFN.
Individua il file .uplugin nella directory del progetto.
Apri il file .uplugin in un editor di testo.
Trova la proprietà EnableVerseAssetReflection e impostala su vero.
Se nessuna proprietà del genere è presente, aggiungi la riga seguente in VersePath:
"EnableVerseAssetReflection" : true,Salva il file .uplugin.
Riapri il progetto in UEFN.