Puedes exponer tus recursos de UEFN a Verse para poder utilizarlos en tu código. Esto se llama reflejo de recursos, y puedes utilizarlo para insertar imágenes en tu IU personalizada o utilizar mallas para tus elementos personalizados.
Cuando expones un recurso en Verse, el nombre del recurso se convierte en el identificador, un símbolo del compilador que puedes utilizar en tu código de Verse, y puedes acceder al recurso desde su ruta de Verse. La denominación de los recursos debe seguir las convenciones y normas de nomenclatura de los identificadores. Puedes ver todos los recursos expuestos a Verse en el archivo Assets.digest.verse de tu proyecto.
Para que se genere el archivo Assets.digest.verse, debes tener al menos un archivo de Verse en tu proyecto antes de compilar el código.
Por ejemplo, si tu textura se llama MyTexture, aparecerá en el archivo Assets.digest.verse como MyTexture<scoped {MyProject}>:texture_2d = external {}.
Cuando colocas tus recursos en subcarpetas de la carpeta Contenido del proyecto, el nombre de la subcarpeta se convierte en el nombre del módulo Verse. Por ejemplo, cuando creas una malla personalizada con el nombre MySphere y está en la subcarpeta Mallas de la carpeta Contenido del proyecto, debes calificar el nombre de la malla con el nombre del módulo (subcarpeta) en el código, como Meshes.MySphere.
Actualmente, puedes exponer los siguientes tipos de recursos a Verse:
Mallas
Texturas
Materiales
Sistemas de efectos visuales de partículas de Niagara
Las siguientes secciones describen cómo configurar cada tipo de recurso para que esté disponible en tu código de Verse.
Mallas
Para poder hacer referencia a tus mallas en el código de Verse, debes:
Modela tu malla en UEFN o importa una malla a tu proyecto.
Los recursos importados desde Fab deben añadirse como recursos modificables de Unreal Engine para que aparezcan en el archivo Assets.digest.verse. Actualmente no puedes utilizar recursos referenciados de Fab en tu código de Verse.
Guarda la malla seleccionando Archivo > Guardar todo.
Comprueba que el nombre de tu malla aparece en el archivo Assets.digest.verse de tu proyecto.
A continuación, puedes utilizar tu malla con las API de Verse, como por ejemplo establecer la malla en un elemento del modo Creativo.
El siguiente ejemplo es un dispositivo diseñado en Verse que genera un elemento cuando se inicia el juego. El ejemplo utiliza una malla denominada MySphere que estaba en la subcarpeta Mallas de la carpeta Contenido del proyecto.
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):
Texturas
Para poder hacer referencia a tu textura en el código de Verse, debes:
Importa tu textura a UEFN.
Los recursos importados desde Fab deben añadirse como recursos modificables de Unreal Engine para que aparezcan en el archivo Assets.digest.verse. Actualmente no puedes utilizar recursos referenciados de Fab en tu código de Verse.
Guarda la textura seleccionando Archivo > Guardar todo.
Comprueba que el nombre de tu textura aparece en el archivo Assets.digest.verse de tu proyecto.
A continuación, puedes utilizar tu textura con las API de Verse, como la IU de Verse.
Materiales
Para poder hacer referencia a tu material en el código de Verse, debes:
Crea tu material en UEFN.
Comprueba que el nombre de tu material aparece en el archivo Assets.digest.Verse de tu proyecto.
A continuación, puedes utilizar tu material con las API de Verse, como la IU de Verse y configurar el material en elementos del modo 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:
Parámetros de material
Cuando creas un material y le añades parámetros, esos parámetros aparecen como campos en la clase de material en el archivo Assets.digest.verse. Cuando configuréis vuestro material en una malla, luego podréis modificar los parámetros del material en Verse durante el tiempo de ejecución.
Los siguientes tipos de parámetros de tu material pueden exponerse en Verse:
| Parámetros de material | Tipo de Verse | Descripción |
|---|---|---|
Un único valor de coma flotante. | ||
Un parámetro para acceder y establecer la textura en un material. | ||
La estructura |
El siguiente ejemplo utiliza un material denominado ConcreteMaterial con un parámetro vector4 denominado MyRandomColor.
Esto es lo que aparece en el archivo Assets.digest.verse de este 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 {}Para poder acceder y actualizar los parámetros de este material, primero debes instanciar el material en tu código Verse. En el siguiente ejemplo, el material se instancia y luego se establece en una malla antes de la modificación de los parámetros.
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):
Recursos de efectos visuales y sistemas de partículas
Para poder hacer referencia al sistema de efectos visuales de partículas de Niagara en tu código Verse:
Crea tu sistema de partículas en UEFN.
Comprueba que el nombre de tu sistema de partículas aparece en el archivo Assets.digest.verse.
A continuación, puedes generar el sistema de partículas mediante la función SpawnParticleSystem(). El siguiente ejemplo utiliza un sistema de partículas denominado MyParticleSystem que estaba en la subcarpeta VFX de la carpeta Contenido del proyecto.
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=
Limitaciones conocidas
A continuación se enumeran las limitaciones actuales del reflejo de recursos:
Cuando utilizas
SetMeshen un elemento, es posible que el material de la nueva malla no aparezca en el elemento porque algunos elementos del conjunto de herramientas del modo Creativo tienen definido un material de anulación. Si el elemento no tiene material de anulación, cuando cambies la malla, se utilizará el material de la nueva malla.Dar a un recurso el mismo nombre que otro identificador de tu proyecto provocará errores de compilación. Por ejemplo, un proyecto con la estructura que se muestra a continuación no se compilará porque hay un recurso con el nombre
MyMeshy una carpeta denominadaMyMesh. Habría que cambiar el nombre de la carpeta o del recurso para que el código se compilara.MyFolder /
MyMesh.uasset
MyMesh /
MyOtherMesh.uasset
Resolución de problemas
Si tienes problemas para actualizar tu archivo Assets.digest.verse o para compilar tu código con reflejo de recursos, prueba las soluciones que se indican a continuación.
No utilices palabras clave de Verse, como
setoblock,en el nombre de los recursos y las carpetas. El archivo Assets.digest.verse de Verse crea identificadores de Verse a partir de nombres. Utilizar una palabra clave como identificador de Verse provocará errores de compilación. Consulta la Referencia rápida del lenguaje Verse para ver una lista de palabras clave de Verse.No utilices los nombres de las API de Verse o de sus miembros como nombre de recursos o carpetas. Consulta la Referencia de la API de Verse.
Sigue las convenciones de nomenclatura de Verse cuando nombres tus recursos y carpetas o puede que se omitan en la generación del archivo de compendio.
Si intentas hacer referencia a un recurso fuera de su módulo, podrías recibir un error de acceso. Esto se debe a que los módulos tienen el especificador de acceso
<internal>de forma predeterminada. Para corregir el error, tienes que añadir el especificador de acceso<public>a la declaración del módulo. Si el módulo se especificó creando una carpeta en tu proyecto, tienes que cambiar la accesibilidad del módulo en el código. Por ejemplo, en la siguiente estructura de proyecto,Materials,MeshesyTexturesson submódulos del móduloWatermelon.MyProject /
MiniGame /
MiniGameAssets /
Watermelon /
Materials /
Meshes /
Watermelon.uasset
Textures /
hello_world_device.verse
El siguiente código de hello_world_device.verse cambia la accesibilidad del módulo Meshes a pública.
MiniGame := module:
MiniGameAssets<public> := module:
Watermelon<public> := module:
Meshes<public> := module {}Ahora el archivo hello_world_device.verse del proyecto puede hacer referencia al Watermelon.uasset en el código mediante la ruta MiniGame.MiniGameAssets.Watermelon.Meshes.Watermelon.
Si un identificador causa un error en el código de Verse, probablemente lo hará por el nombre de un recurso o carpeta. Comprueba los posibles nombres de recursos y carpetas escribiéndolos primero como identificadores en el código.
Cómo activar el reflejo de recursos
Con la versión 26.00, la posibilidad de exponer recursos de UEFN en Verse está activada por defecto para todos los proyectos de UEFN de nueva creación. Para cualquiera de tus proyectos creados antes de la versión 26.00, tendrás que activar esta función siguiendo estos pasos:
Cierra tu proyecto en UEFN.
Localiza el archivo .uplugin en el directorio del proyecto.
Abre el archivo .uplugin en un editor de texto.
Busca la propiedad EnableVerseAssetReflection y actívala.
Si no existe tal propiedad, añade la siguiente línea en VersePath:
"EnableVerseAssetReflection" : true,Guarda el archivo .uplugin.
Vuelve a abrir tu proyecto en UEFN.