Puedes exponer tus recursos en UEFN a Verse para utilizarlos desde tu código de Verse. A esto se le llama reflejo de recursos, y puedes usarlo para insertar imágenes en tu IU personalizada o usar mallas para tus utilerías personalizadas.
Cuando expones un recurso a Verse, el nombre del recurso se convierte en el identificador, un símbolo del compilador, que puedes usar en tu código de Verse, y puedes acceder a tu recurso desde su ruta de Verse. Los nombres de los recursos deben seguir las convenciones y reglas de nomenclatura para los identificadores. Puedes ver todos tus 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 de Verse.
Por ejemplo, si tu textura tiene el nombre MyTexture, aparecerá en tu archivo Assets.digest.verse como MyTexture:texture_2d<scoped {MyProject}> = external {}.
Cuando colocas tus recursos en subcarpetas en la carpeta de contenido del proyecto, el nombre de la subcarpeta se convierte en el nombre del módulo de Verse. Por ejemplo, cuando creas una malla personalizada llamada MySphere y está en la subcarpeta Meshes de la carpeta Content del proyecto, debes indicar el nombre de la malla con el nombre del módulo (subcarpeta) en el código, como Meshes.MySphere.
Actualmente, puede exponer los siguientes tipos de recursos a Verse:
Mallas
Texturas
Materiales
Sistemas de partículas de Niagara VFX
En las siguientes secciones, se describe 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 tu código de Verse, debes hacer lo siguiente:
Modela tu malla en UEFN o importa una malla a tu proyecto.
Los recursos que importes desde Fab deben agregarse como recursos modificables de Unreal Engine para que se muestren en el archivo Assets.digest.verse. Actualmente no puedes utilizar recursos referenciados de Fab en tu código de Verse.
Guarda la malla eligiendo Archivo > Guardar todo.
Comprueba que el nombre de la malla aparezca en el archivo Assets.digest.verse del proyecto.
A continuación, puedes utilizar tu malla con las API de Verse, como por ejemplo colocar la malla en una utilería del modo Creativo.
En el siguiente ejemplo, se muestra un dispositivo creado con Verse que genera una utilería cuando se inicia el juego. En el ejemplo, se utiliza una malla llamada 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 tu código de Verse, debes hacer lo siguiente:
Importa tu textura en UEFN.
Los recursos que importes desde Fab deben agregarse como recursos modificables de Unreal Engine para que se muestren en el archivo Assets.digest.verse. Actualmente no puedes utilizar recursos referenciados de Fab en tu código de Verse.
Para guardar la textura, selecciona Archivo > Guardar todo.
Comprueba que el nombre de tu textura aparezca en el archivo Assets.digest.verse de tu proyecto.
Luego, puedes usar tu textura con las API de Verse, como la IU de Verse.
Materiales
Para poder hacer referencia a tu material en tu código de Verse, debes hacer lo siguiente:
Crea tu material en UEFN.
Comprueba que el nombre de tu material aparezca en el archivo de Verse de tu proyecto.
A continuación, puedes utilizar tu material con las API de Verse, como IU de Verse y establecer el material en las utilerías 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 colocas el material en una malla, puedes modificar sus parámetros en Verse al ejecutarlo.
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 punto flotante. | ||
Parámetro para acceder a la textura de un material y establecerla. | ||
La |
El siguiente ejemplo usa un material llamado ConcreteMaterial con un parámetro vector4 llamado 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 al material y actualizar sus parámetros, debes instanciar tu material en tu código de Verse primero. En el ejemplo siguiente, el material se instancia y luego se establece en una malla antes de modificar sus 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 a tu sistema de partículas de VFX de Niagara en tu código de Verse, debes hacer lo siguiente:
Crea tu sistema de partículas en UEFN.
Comprueba que el nombre de tu sistema de partículas aparezca en el archivo Assets.digest.verse de tu proyecto.
A continuación, puedes generar el sistema de partículas mediante la función SpawnParticleSystem(). En el ejemplo, se utiliza un sistema de partículas llamado 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 los recursos:
Cuando usas
SetMeshen una utilería, es posible que el material de la nueva malla no aparezca en la utilería porque algunas utilerías del conjunto de herramientas del modo Creativo tienen un material de anulación definido. Si la utilería no tiene material de anulación, al momento de cambiar la malla, se utiliza el material de la nueva malla.Dar a un recurso el mismo nombre que a otro identificador en tu proyecto provocará errores de compilación. Por ejemplo, un proyecto con la estructura que se muestra a continuación no compilará porque hay un recurso llamado
MyMeshy una carpeta llamadaMyMesh. La carpeta o el recurso deberían renombrarse para que el código compile.MyFolder /
MyMesh.uasset
MyMesh /
MyOtherMesh.uasset
Resolución de problemas
Si tienes problemas con la actualización de tu archivo Assets.digest.verse o con la compilación de tu código de reflejo de recursos, prueba las siguientes soluciones.
No utilices palabras clave de Verse, como
setoblock, como nombre de ningún recurso o carpeta. El archivo de Verse crea identificadores de Verse a partir de estos nombres. El uso de una palabra clave como identificador de Verse provocará errores de compilación. Consulta la Referencia rápida del lenguaje Verse para obtener una lista de palabras clave de Verse.No utilices los nombres de las API de Verse o los miembros de la API como nombre de recursos o carpetas. Consulta la referencia de la API de Verse.
Sigue las convenciones de nomenclatura de Verse a la hora de nombrar tus recursos y carpetas, o podrían omitirse en la generación del archivo de resumen.
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
<internal>especificador de acceso predeterminado. Para corregir el error, debes agregar el especificador de acceso<public>a la declaración del módulo. Si el módulo se especificó mediante la creación de una carpeta en el proyecto, es necesario cambiar la accesibilidad del módulo en el código. Por ejemplo, en la siguiente estructura de proyecto, losmateriales,mallas, ytexturasson submódulos del móduloWatermelon.MyProject /
MiniGame /
MiniGameAssets /
Watermelon /
Materiales /
Mallas /
Watermelon.uasset
Texturas
hello_world_device.verse
El siguiente código en hello_world_device.verse cambia la accesibilidad del módulo Mallas 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 a Watermelon.uasset en el código mediante la ruta MiniGame.MiniGameAssets.Watermelon.Meshes.Watermelon.
Si un identificador provoca un error en tu código de Verse, es probable que provoque un error como nombre de un recurso o una carpeta. Verifica los posibles nombres de recursos y carpetas escribiéndolos primero como identificadores en el código.
Habilitar reflexión de recursos
Con el lanzamiento de la versión 26.00, la capacidad de exponer recursos de UEFN en Verse está habilitada, de manera predeterminada, para todos los proyectos de UEFN recién creados. Para todo proyecto creado antes de la versión 26.00, tendrás que habilitar esta función siguiendo los siguientes pasos:
Cierra el proyecto en UEFN.
Ubica el .uplugin en el directorio del proyecto.
Abre el .uplugin. en un editor de texto.
Busca la propiedad EnableVerseAssetReflection y defínela en verdadero.
Si dicha propiedad no está presente, agrega la siguiente línea en VersePath:
"EnableVerseAssetReflection" : true,Guarda el .uplugin. archivo.
Abre de nuevo tu proyecto en UEFN.