Um Objeto Personalizável Sem Dados é um Objeto Personalizável de normal cujos nós de entrada são Nós de Parâmetros alteráveis no jogo.
Você pode converter qualquer Objeto Personalizável em sem dados substituindo os seguintes nós:
| Nós de Constantes | Nós de Parâmetros |
|---|---|
Nó de Textura | Nó de Parâmetro de Textura |
Nó da Malha Esquelética | Nó de Parâmetro da Malha Esquelética |
Nó de material | Nó de Parâmetro de Material |
Nó de Tabela | Nó T/SK/M |
Não é necessário substituir todos os nós. Você pode misturar e combinar nós de Constantes e Parâmetros. Resumindo, você só aproveitará a ausência de dados nas entradas que são nós de Parâmetros.
Melhorias em Objetos Personalizáveis
Tempo de Compilação Mais Rápido: as entradas dos nós de parâmetros não são compiladas; em vez disso, são convertidas em tempo de execução.
Criptografia: agora a criptografia funciona imediatamente. Como as entradas não são mais compiladas (são UObjects normais), elas agora podem ser criptografadas como de costume.
Fluxo de trabalho regular do UE: com os antigos nós de Constante, você tinha que ter em mente que as malhas e os parâmetros seriam incorporados no Objeto Personalizável em um processo de preparação especial, e os ativos originais seriam exclusivos do editor. Com o novo sistema sem dados, ele funciona como qualquer outro material semelhante ao sistema UE.
Possivelmente pacotes menores: anteriormente, se uma entrada fosse referenciada fora do Mutável, ela era incluída no pacote duas vezes: uma vez como um Recurso Mutável compilado e uma vez como um UObject e, por isso, não era recomendado. Como as entradas de Parâmetros não são mais compiladas, esse não é mais o caso.
Limitações
Com menor desempenho: conversões de tempo de execução e algumas otimizações, como geração de constantes, não podem ser aplicadas em tempo de compilação.
Sem opções disponíveis: os parâmetros de entrada não têm uma lista de opções disponíveis. Isso significa que os programadores de jogabilidade agora são responsáveis por restringir quais entradas podem ser transmitidas nos parâmetros.
Novos Parâmetros
Como parâmetros regulares, os novos Parâmetros de Textura, Malha Esquelética e Material podem ser definidos criando-se uma Instância de Objeto Personalizável e chamando as seguintes funções (Blueprint ou C++):
UFUNCTION(BlueprintCallable, Category = CustomizableObjectInstance)
void SetTextureParameterSelectedOption(
const FString& TextureParamName,
UTexture* TextureValue);
UFUNCTION(BlueprintCallable, Category = CustomizableObjectInstance)
void SetSkeletalMeshParameterSelectedOption(
const FString& SkeletalMeshParamName,
USkeletalMesh* SkeletalMeshValue);
UFUNCTION(BlueprintCallable, Category = CustomizableObjectInstance)
void SetMaterialParameterSelectedOption(
const FString& MaterialParamName,
UMaterialInterface* MaterialValue);
Além disso, em cada nó de Parâmetro, você pode especificar um Valor Padrão. Este Valor Padrão é opcional e, se não for especificado, será nullptr. Você pode obter estes Valores Padrão no Objeto Personalizável:
UFUNCTION(BlueprintCallable, Category = CustomizableObject)
UTexture* GetTextureParameterDefaultValue(
const FString& InParameterName) const;
UFUNCTION(BlueprintCallable, Category = CustomizableObject)
USkeletalMesh* GetSkeletalMeshParameterDefaultValue(
const FString& ParameterName) const;
UFUNCTION(BlueprintCallable, Category = CustomizableObject)
UMaterialInterface* GetMaterialParameterDefaultValue(
const FString& ParameterName) const;
Tenha em mente que se um Valor Padrão for definido, os objetos referenciados serão preparados. Além disso, o ciclo de vida desses objetos é o mesmo do Objeto Personalizável, pois são referências fortes.
Depois que todos os parâmetros forem definidos. Para ver os resultados, você precisa chamar:
UFUNCTION(BlueprintCallable, Category = CustomizableObjectInstance)
void UpdateSkeletalMeshAsync(
bool bIgnoreCloseDist = false,
bool bForceHighPriority = false);
Exemplo
Nós Regulares As referências da Malha Esquelética são mostradas no Visualizador de Referências devido a uma referência exclusiva do editor.
Em um jogo empacotado, eles não são incluídos como UObjects, mas como Recursos Mutáveis:
Nós Sem Dados Observe que apenas os nós da Malha Esquelética foram convertidos para sem dados.
O Material ainda é uma constante (não um parâmetro):