Você pode expor os ativos no UEFN para Verse para poder usá-los no código Verse. Isso é chamado de reflexão de ativos e você pode usá-la para inserir imagens na sua interface de usuário ou usar malhas para seus adereços personalizados.
Quando você expõe um ativo em Verse, o nome dele se torna o identificador, um símbolo de compilador, que pode então ser usado no código Verse e acessado de acordo com seu respectivo caminho em Verse. A nomenclatura dos ativos deve seguir as convenções e regras de nomenclatura para identificadores. Você pode ver todos os seus ativos expostos em Verse no arquivo Assets.digest.verse do projeto.
Para que o arquivo Assets.digest.verse seja gerado, você deve ter pelo menos um arquivo do Verse em seu projeto antes de criar o código do Verse.
Por exemplo, se a sua textura tiver o nome MyTexture, ela aparecerá no seu arquivo Assets.digest.verse como MyTexture<scoped {MyProject}>:texture_2d = external {}.
Quando você coloca seus ativos em subpastas na pasta Conteúdo do projeto, o nome da subpasta torna-se o nome do módulo Verse. Por exemplo, quando você cria uma malha personalizada chamada MySphere e ela está na subpasta Malhas da pasta Contéudo do projeto, você deve qualificar o nome da malha com o nome do módulo (subpasta) no código, como Meshes.MySphere.
No momento, é possível expor os seguintes tipos de ativos ao Verse:
Malhas
Texturas
Materiais
Sistemas de partículas de efeitos visuais do Niagara
As seções a seguir descrevem como configurar cada tipo de ativo para estar disponível no código Verse.
Malhas
Para poder referenciar as malhas no código Verse, você deve:
Modele sua malha no UEFN ou importe uma malha para seu projeto.
Os ativos que você importa da Fab devem ser adicionados como um ativo modificável da Unreal Engine para que sejam exibidos no arquivo Assets.digest.verse. No momento, você não pode usar ativos referenciados da Fab no código Verse.
Salve a malha selecionando Arquivo, Salvar tudo.
Verifique se o nome da malha aparece no arquivo Assets.digest.verse do projeto.
Você pode usar a malha com APIs do Verse, por exemplo, para definir a malha em um adereço do Modo Criativo.
O exemplo a seguir é um dispositivo de autoria em Verse que gera um adereço quando o jogo começa. O exemplo usa uma malha chamada MySphere que estava na subpasta Malhas da pasta Conteúdo do projeto.
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 referenciar sua textura no código Verse, você deve:
Importar a textura para o UEFN.
Os ativos que você importa da Fab devem ser adicionados como um ativo modificável da Unreal Engine para que sejam exibidos no arquivo Assets.digest.verse. No momento, você não pode usar ativos referenciados da Fab no código Verse.
Salve a textura selecionando Arquivo, Salvar tudo.
Verifique se o nome da textura aparece no arquivo Assets.digest.verse do projeto.
Você pode então usar sua textura com as APIs Verse, como a interface de usuário em Verse.
Materiais
Para poder referenciar seu material no código Verse, você deve:
Criar seu material no UEFN.
Verifique se o nome do seu material aparece no arquivo Assets.digest.verse do seu projeto.
Você poderá usar esse material com as APIs Verse, como a interface de usuário Verse e definir o material nos adereços do criativos.
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
Ao criar um material e adicionar parâmetros a ele, esses parâmetros aparecerão na classe material no arquivo Assets.digest.verse. Quando você define seu material em uma malha, poderá modificar os parâmetros no material em Verse no tempo de execução.
Os seguintes tipos de parâmetros do seu material podem ser expostos em Verse:
| Parâmetros de material | Tipo Verse | Descrição |
|---|---|---|
Um único valor de ponto flutuante. | ||
Um parâmetro para acessar e definir a textura em um material. | ||
A estrutura |
O exemplo a seguir usa um material chamado ConcreteMaterial com um parâmetro vector4 chamado MyRandomColor.
É isso que é exibido no arquivo Assets.digest.verse para 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 acessar e atualizar os parâmetros neste material, você precisa primeiro instanciar o material no código Verse. No exemplo a seguir, o material é instanciado e depois definido em uma malha antes de os parâmetros serem modificados.
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):
Ativos de efeitos visuais e sistemas de partículas
Para poder referenciar seu sistema de partículas de efeitos visuais do Niagara no código Verse, você deve:
Crie seu sistema de partículas no UEFN.
Verifique se o nome do seu sistema de partículas aparece no arquivo Assets.digest.verse do seu projeto.
Você pode então gerar o sistema de partículas usando a função SpawnParticleSystem(). O exemplo a seguir usa um sistema de partículas chamado MyParticleSystem que estava na subpasta Efeitos Visuais da pasta Conteúdo do projeto.
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=
Limitações conhecidas
Listamos a seguir as limitações atuais com a reflexão de ativos:
Quando você usa
SetMeshem um adereço, o material da nova malha pode não aparecer no objeto porque alguns objetos no conjunto de ferramentas do Modo Criativo têm um material de substituição definido. Se o adereço não tiver material de substituição, quando você alterar a malha, será usado o material da nova malha.Dar a um ativo o mesmo nome de outro identificador em seu projeto causará erros de compilação. Por exemplo, um projeto com a estrutura mostrada abaixo não será compilado porque há um ativo chamado
MyMeshe uma pasta chamadaMyMesh. A pasta ou o ativo teria de ser renomeado para que o código fosse compilado.MyFolder /
MyMesh.uasset
MyMesh /
MyOtherMesh.uasset
Solução de problemas
Se estiver enfrentando problemas com a atualização do arquivo Assets.digest.verse ou com a compilação do código de reflexo de ativos, tente as correções abaixo.
Não use palavras-chave de Verse, como
setoublock, como o nome de quaisquer ativos ou pastas. O arquivo Assets.digest.verse cria identificadores Verse a partir desses nomes. O uso de uma palavra-chave como identificador de Verse causará erros de compilação. Consulte a Referência rápida da linguagem Verse para obter uma lista de palavras-chave de Verse.Não use os nomes das APIs Verse ou dos membros da API como nome de ativos ou pastas. Consulte a Referência da API Verse.
Siga as convenções de nomenclatura de Verse ao nomear seus ativos e pastas, ou eles poderão ser ignorados na geração do arquivo de resumo.
Se estiver tentando referenciar um ativo fora do módulo dele, poderá receber um erro de acesso. Isso ocorre porque os módulos têm o especificador de acesso
<internal>por padrão. Para corrigir o erro, você precisa adicionar o especificador de acesso<public>à declaração do módulo. Se o módulo foi especificado por meio da criação de uma pasta em seu projeto, você precisará alterar a acessibilidade do módulo no seu código. Por exemplo, na estrutura de projeto a seguir,Materials,MesheseTexturessão submódulos do móduloWatermelon.MyProject /
MiniGame /
MiniGameAssets /
Watermelon /
Materials /
Meshes /
Watermelon.uasset
Textures /
hello_world_device.verse
O código a seguir em hello_world_device.verse altera a acessibilidade do módulo de Malhas para pública.
MiniGame := module:
MiniGameAssets<public> := module:
Watermelon<public> := module:
Meshes<public> := module {}Agora, o arquivo hello_world_device.verse do projeto pode fazer referência ao Watermelon.uasset no código usando o caminho MiniGame.MiniGameAssets.Watermelon.Meshes.Watermelon.
Se um identificador causar um erro em seu código Verse, provavelmente causará um erro como o nome de um ativo ou pasta. Verifique os possíveis nomes de ativos e pastas digitando-os primeiro como identificadores no código.
Habilitar reflexos de ativos
Com a versão 26.00, a capacidade de expor ativos do UEFN para Verse fica habilitada por padrão para todos os projetos recém-criados do UEFN. Para qualquer um dos seus projetos criados antes da versão 26.00, você precisará habilitar essa funcionalidade seguindo estas etapas:
Feche seu projeto no UEFN.
Localize o arquivo .uplugin no diretório do projeto.
Abra o arquivo .uplugin em um editor de texto.
Localize a propriedade EnableVerseAssetReflection e defina-a como true.
Se nenhuma propriedade estiver presente, adicione a seguinte linha em VersePath:
"EnableVerseAssetReflection" : true,Salve o arquivo .uplugin.
Abra novamente seu projeto no UEFN.