Du kannst deine Assets in UEFN für Verse freigeben, damit du sie mit deinem Verse-Code verwenden kannst. Das wird als Asset-Reflexion bezeichnet und du kannst damit Bilder in deine benutzerdefinierte Benutzeroberfläche einfügen oder Meshs für deine benutzerdefinierten Props verwenden.
Wenn du ein Asset in Verse freigibst, wird der Name des Assets zum Bezeichner, einem Compiler-Symbol, das du dann in deinem Verse-Code verwenden kannst, und du kannst auf dein Asset über seinen Verse-Pfad zugreifen. Die Benennung von Assets sollte den Benennungskonventionen und Regeln für Bezeichner folgen. In der Datei Assets.digest.verse deines Projekts kannst du alle Assets sehen, die für Verse freigegeben sind.
Damit die Datei Assets.digest.verse generiert wird, muss sich mindestens eine Verse-Datei in deinem Projekt befinden, bevor der Verse-Code erstellt wird.
Wenn deine Textur beispielsweise den Namen MyTexture hat, wird sie in deiner Datei Assets.digest.verse als MyTexture<scoped {MyProject}>:texture_2d = external {} erscheinen.
Wenn du deine Assets in Unterordnern im Ordner Projektinhalt platzierst, wird der Name des Unterordners zum Namen des Verse-Moduls. Wenn du zum Beispiel ein benutzerdefiniertes Mesh mit dem Namen MySphere erstellst und es sich im Unterordner Meshes des Projektordners Content befindet, musst du den Namen des Mesh mit dem Namen des Moduls (Unterordners) im Code qualifizieren, wie zum Beispiel Meshes.MySphere.
Derzeit lassen sich die folgenden Asset-Typen für Verse freigeben:
Meshs
Texturen
Materialien
Niagara VFX-Partikel-Systeme
In den folgenden Abschnitten wird beschrieben, wie du die einzelnen Asset-Typen so einrichtest, dass sie in deinem Verse-Code verfügbar sind.
Meshs
Um deine Meshs in deinem Verse-Code referenzieren zu können, musst du folgende Punkte befolgen:
Modelliere dein Mesh in UEFN oder importiere ein Mesh in dein Projekt.
Assets, die du aus Fab importierst, müssen als modifizierbares Unreal Engine-Asset hinzugefügt werden, damit sie in der Datei Assets.digest.verse erscheinen. Derzeit kannst du keine referenzierten Assets aus Fab in deinem Verse-Code verwenden.
Speichere das Mesh, indem du Datei > Alles speichern wählst.
Vergewissere dich, dass der Name deines Mesh in der Datei Assets.digest.verse deines Projekts erscheint.
Du kannst dann dein Mesh mit Verse-APIs verwenden, z. B. indem du das Mesh auf ein Kreativmodus-Prop setzt.
Das folgende Beispiel ist ein in Verse erstelltes Gerät, das beim Spielstart ein Prop spawnt. Das Beispiel verwendet ein Mesh mit dem Namen MySphere, das sich im Unterordner Meshes des Ordners Content des Projekts befindet.
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):
Texturen
Um deine Texturen in deinem Verse-Code referenzieren zu können, musst du:
Deine Textur in UEFN importieren
Assets, die du aus Fab importierst, müssen als modifizierbares Unreal Engine-Asset hinzugefügt werden, damit sie in der Datei Assets.digest.verse erscheinen. Derzeit kannst du keine referenzierten Assets aus Fab in deinem Verse-Code verwenden.
Speichere die Textur, indem du Datei > Alles speichern wählst.
Vergewissere dich, dass der Name deiner Textur in der Datei Assets.digest.Verse deines Projekts erscheint.
Du kannst deine Textur nun mit Verse-APIs verwenden, wie z. B. Verse UI.
Materialien
Um dein Material in deinem Verse-Code referenzieren zu können, musst du folgende Punkte befolgen:
Erstelle dein Material in UEFN.
Vergewissere dich, dass der Name deines Materials in der Datei Assets.digest.verse deines Projekts erscheint.
Du kannst dein Material dann mit Verse-APIs verwenden, wie z. B. Verse UI und das Material bei Kreativmodus-Props festlegen.
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:
Materialparameter
Wenn du ein Material erstellst und Parameter hinzufügst, werden diese Parameter als Felder der Materialklasse in der Datei Assets.digest.verse angezeigt. Wenn ihr das Material für ein Mesh festlegt, könnt ihr anschließend die Parameter des Materials in Verse zur Laufzeit ändern.
Die folgenden Parametertypen aus deinem Material können in Verse verfügbar gemacht werden:
| Materialparameter | Verse-Typ | Beschreibung |
|---|---|---|
Ein einzelner Fließkomma-Wert. | ||
Ein Parameter für den Zugriff und das Festlegen der Textur eines Materials. | ||
Die Struktur |
Das folgende Beispiel verwendet ein Material mit dem Namen ConcreteMaterial mit einem vector4-Parameter mit dem Namen MyRandomColor.
Dies erscheint nun in der Datei Assets.digest.verse für dieses Material:
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 {}Um auf die Parameter dieses Materials zugreifen und sie aktualisieren zu können, musst du dein Material zuerst in Ihrem Verse-Code instanziieren. Im folgenden Beispiel wird das Material instanziiert und dann auf einem Netz festgelegt, bevor die Parameter geändert werden.
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):
VFX-Assets und Partikel-Systeme
Um dein Niagara VFX Partikel-System in deinem Verse-Code referenzieren zu können, musst du folgende Punkte befolgen:
Erstelle dein Partikel-System in UEFN.
Vergewissere dich, dass der Name deines Partikel-Systems in der Datei Assets.digest.verse deines Projekts erscheint.
Du kannst dann das Partikel-System mit der Funktion SpawnParticleSystem() spawnen. Das folgende Beispiel verwendet ein Partikel-System mit dem Namen MyParticleSystem, das sich im Unterordner VFX des Ordners Content des Projekts befindet.
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=
Bekannte Einschränkungen
Im Folgenden sind die aktuellen Beschränkungen der Asset-Reflexion aufgeführt:
Wenn du
SetMeshin einem Prop verwendest, wird das Material des neuen Mesh möglicherweise nicht im Prop angezeigt, weil in einigen Props in den Kreativmoduswerkzeugen ein Material definiert ist, das es überschreibt. Wenn das Prop über kein Override-Material verfügt, wenn du das Mesh änderst, wird das Material des neuen Mesh verwendet.Wenn ein Asset den gleichen Namen wie ein anderer Bezeichner in deinem Projekt hat, kommt es zu Kompilierungsfehlern. Zum Beispiel wird ein Projekt mit der unten dargestellten Struktur nicht kompiliert, weil ein Asset mit dem Namen
MyMeshund ein Ordner mit der BezeichnungMyMeshvorhanden ist. Der Ordner oder das Asset muss umbenannt werden, damit der Code kompiliert werden kann.MeinOrdner /
MeinMesh.uasset
MeinMesh /
MeinAnderesMesh.uasset
Fehlersuche
Wenn du Probleme mit der Aktualisierung deiner Assets.digest.Verse-Datei oder mit der Kompilierung deines Asset-Reflexion-Codes feststellst, versuche die folgenden Schritte.
Verwende keine Verse-Schlüsselwörter wie
setoderblockals Namen für Assets oder Ordner. Die Datei Assets.digest.Verse erstellt aus diesen Namen Verse-Bezeichner. Wird ein Schlüsselwort als Verse-Kennung verwendet, führt das zu Kompilierungsfehlern. Eine Liste der Verse-Schlüsselwörtern findest du in der Verse-Sprache Schnellreferenz.Verwende nicht die Namen von Verse-APIs oder API-Mitgliedern als Namen für Assets oder Ordner. Weitere Informationen findest du in Verse API Reference.
Befolge die Benennungskonventionen für Verse bei der Benennung deiner Assets und Ordner, da sie andernfalls möglicherweise bei der Generierung der Digest-Datei übersprungen werden.
Wenn du versuchst, ein Asset außerhalb seines Moduls zu referenzieren, kann es zu einem Zugriffsfehler kommen. Das liegt daran, dass Module standardmäßig den Zugriffsbezeichner
<internal>haben. Um diesen Fehler zu beheben, musst du den Zugriffsbezeichner<public>zur Moduldeklaration hinzufügen. Wenn das Modul durch das Erstellen eines Ordners in deinem Projekt festgelegt wurde, musst du die Zugänglichkeit des Moduls in deinem Code ändern. Zum Beispiel sind in der folgenden ProjektstrukturMaterials,MeshesundTexturesUntermodule des ModulsWatermelon.MeinProjekt /
MiniGame /
MiniGameAssets /
Watermelon /
Materials /
Meshes /
Watermelon.uasset
Textures /
hello_world_device.verse
Der folgende Code in hello_world_device.verse ändert die Zugänglichkeit des Moduls Meshes zu öffentlich.
MiniGame := module:
MiniGameAssets<public> := module:
Watermelon<public> := module:
Meshes<public> := module {}Jetzt kann die Datei hello_world_device.verse des Projekts auf Watermelon.uasset im Code referenzieren, indem der Pfad MiniGame.MiniGameAssets.Watermelon.Meshes.Watermelon verwendet wird.
Wenn eine Kennung zu einem Fehler in deinem Verse-Code führt, verursacht sie wahrscheinlich einen Fehler als Name eines Assets oder Ordners. Prüfe mögliche Asset- und Ordnernamen, indem du sie zuerst als Kennungen im Code eingibst.
Aktivieren der Asset-Reflexion
Mit der Veröffentlichung von Version 26.00 wurde die Möglichkeit zur Freigabe von Assets aus UEFN für Verse standardmäßig für alle neu erstellten UEFN-Projekte aktiviert. Bei allen Projekten, die vor 26.00 erstellt wurden, musst du diese Funktion anhand dieser Schritte aktivieren:
Schließe dein Projekt in UEFN.
Suche die Datei .uplugin im Projektverzeichnis.
Öffne die Datei .uplugin in einem Texteditor.
Finde die Eigenschaft EnableVerseAssetReflection und lege sie auf true fest.
Wenn keine derartige Eigenschaft vorhanden ist, füge die folgende Zeile nach VersePath ein:
"EnableVerseAssetReflection" : true,Speichere die .uplugin- Datei.
Öffne dein Projekt erneut in UEFN.