Ao contrário do sistema de atores tradicional encontrado na Unreal Engine, o Scene Graph usa um sistema de entidades e componentes para definir objetos no mundo. Entidades atuam como contâineres para componentes e outras entidades, e os componentes fornecem relações com as entidades às quais estão anexados. A criação de um objeto de jogo com o Scene Graph envolve começar com uma entidade base e adicionar dados e comportamentos usando componentes. Cada componente traz um novo comportamento e, ao combiná-los, você pode criar objetos complexos que podem ser reutilizados e iterados.
Noções básicas de construção
Para ilustrar esse ponto, confira a série de postes de luz na primeira seção do corredor do modelo. Cada poste de luz é uma estrutura pré-fabricada, ou uma coleção de entidades e componentes salvos como um único objeto. O objeto de estrutura pré-fabricada compartilha as características, o comportamento, as propriedades e os atributos das entidades e componentes dos quais é construído. Para saber mais sobre entidades e componentes, consulte o documento Como trabalhar com entidades e componentes.
Iteração por meio da instanciação
Estruturas pré-fabricadas são ativos, e isso permite instanciar-las nos seus níveis durante a edição ou a jogabilidade. Cada vez que você arrasta uma estrutura pré-fabricada para fora do Navegador de Conteúdo ou cria uma cópia usando o código Verse, está instanciando uma nova instância dessa estrutura pré-fabricada do Scene Graph no mundo.
Embora cada instância da estrutura pré-fabricada tenha sua própria memória e custos de processamento, instanciar novas estruturas pré-fabricadas não duplica a memória porque os recursos usados em uma estrutura pré-fabricada são compartilhados entre instâncias.
Embora instanciar várias instâncias do mesmo objeto seja eficiente, as estruturas pré-fabricadas também fornecem uma maneira útil de iterar rapidamente em um design. No Navegador de Conteúdo, abra a pasta LightPost. Essa pasta armazena os ativos usados para criar o design final da estrutura pré-fabricada P_LightPost
Cada poste de luz no corredor representa uma parte dessa estrutura pré-fabricada. Conforme você se move pelo corredor, um novo componente é adicionado a cada etapa, até chegar ao design final da estrutura pré-fabricada.
O primeiro poste de luz é uma configuração simples composta por três entidades: um poste de luz, um pivô e um lampião. Cada uma dessas três entidades tem um transform_component que determina onde elas estão no nível. Tanto a entidade pai quanto a entidade Lampião têm um mesh_component para torná-las visíveis e exibir modelos para o poste de luz e o lampião, respectivamente. Eles estão conectados por uma entidade Pivô que representa a conexão entre o poste e o lampião.
O segundo poste de luz itera no design original adicionando uma nova entidade com um sphere_light_component como um descendente do Lampião, fazendo-o brilhar.
Apenas brilhar não é muito interessante, então o terceiro poste de luz adiciona um particle_system_component para simular mariposas voando ao redor da entidade SphereLight para algum estilo visual.
Seguindo em frente, a quarta instância de poste de luz adiciona um simple_movement_component e um keyframe_movement_component à entidade Pivô. Esses componentes operam em conjunto para simular o movimento na entidade e em qualquer um de seus descendentes, permitindo que o lampião balance para frente e para trás.
Esses componentes usam o Verse para determinar o caminho que o lampião percorre, a distância que ele percorre nesse caminho e sua rotação para imitar o vento soprando a luz. O componente de movimento de quadro-chave cria movimento suave e contínuo com base nas coordenadas de simple_movement_component.
Por fim, a última instância de poste de luz adiciona um lantern_interaction_component do Verse personalizado ao poste de luz, bem como um interactable_component ao Lampião. Quando o jogador se aproxima e interage com o lampião, lantern_interaction_component liga e desliga o lampião, habilitando e desabilitando cada light_component e particle_system_component em todo o poste de luz.
Sobreposições
Quando você instancia uma estrutura pré-fabricada, ela começa com os mesmos valores padrão que a definição da estrutura pré-fabricada da qual você a instancia. Mas, e se você quiser alterar um aspecto específico de uma das suas instâncias de estruturas pré-fabricadas? Talvez você queira uma luz de cor diferente, ou um poste de metal em vez de um poste de madeira. É aqui que as Substituições entram.
Substituições permitem alterar os valores em instâncias de uma classe de estrutura pré-fabricada para personalizar cada instância sem alterar a estrutura pré-fabricada pai. Quando você faz alterações nas opções de um componente aninhado em uma instância de estrutura pré-fabricada, essas alterações substituem as opções na estrutura pré-fabricada pai e afetam como a entidade age no nível do componente apenas para essa instância.
Substituições e alterações podem ser feitas em instâncias individuais de estruturas pré-fabricadas para criar variedade na cena. Se, em vez disso, você quiser propagar as alterações para todas as instâncias da estrutura pré-fabricada, pode usar o Editor de Estruturas Pré-fabricadas para refletir essas alterações em todas as estruturas pré-fabricadas na cena.
Funcionalidade do Verse no Scene Graph
O Scene Graph é um sistema Verse nativo, e isso permite que você aproveite os dois juntos de muitas maneiras poderosas. As estruturas pré-fabricadas que você cria no seu projeto são expostas como classes de ativos em Verse por meio do seu arquivo Assets.digest.verse , você e poderá referenciá-las no código em componentes Verse e dispositivos Verse.
Você também pode usar a linguagem Verse para consultar entidades e componentes individuais na sua cena. A função GetComponents() permite obter componentes específicos com base no seu tipo, e GetEntities() permite retornar todas as entidades filhas sob um pai específico. Você também pode pesquisar em cima e em baixo na hierarquia do Scene Graph para localizar entidades descendentes e ancestrais. A estrutura pré-fabricada P_LightPost usada nesse modelo usa o Verse para criar o movimento de oscilação e a interatividade do lampião.
Para saber mais sobre como criar objetos de jogo funcionais, continue na próxima seção, Movimento e interação.
Movimento e interação
Aprendizado de como adicionar movimentos a Entidades cria objetos de jogo funcionais com um componente do Verse e o componente de movimento de quadro-chave.