Instanciando cenas

Esta página foi traduzida automaticamente e pode conter erros. Encontrou um problema? Use o link "Edit this page" para ajudar a corrigir.

Toda cena também é um prefab: um arquivo .prefab é uma árvore de nós que você pode abrir e editar sozinha, e carimbar em outra cena quantas vezes quiser. Crie um inimigo, um item ou uma sala uma vez e faça surgir onde o jogo precisar.

Referenciando um prefab

Dê ao seu componente um campo do tipo AssetReference<Prefab>, ou PrefabReference<T> quando quiser um componente específico da cópia criada:

namespace Usercode;

public class Spawner : Component
{
    public AssetReference<Prefab>? Enemy;
    public PrefabReference<LightComponent>? Lamp;
}

No Inspector, arraste o arquivo .prefab do painel Assets para o campo.

Criando cópias em tempo de execução

A instanciação passa pelo gerenciador de cenas, que os scripts obtêm de RuntimeServices:

public class Spawner : Component
{
    public AssetReference<Prefab>? Enemy;
    public PrefabReference<LightComponent>? Lamp;
    ISceneManager? scenes;

    public override void OnAwake() => scenes = RuntimeServices.TryGet<ISceneManager>();

    public override async void OnStart()
    {
        if (scenes is null || Enemy is null || Lamp is null) return;

        // Adiciona uma cópia sob este nó; passe null para adicioná-la à raiz da cena ativa.
        var enemy = await scenes.InstantiateAsync(Enemy, Node);
        enemy.Transform.Position = new Vector3(2, 0, 0);

        // Retorna o LightComponent encontrado na cópia.
        var lamp = await Lamp.InstantiateAsync(scenes);
        lamp.Intensity = 3f;
    }
}
  • InstantiateAsync(referência, pai) carrega o prefab, faz uma cópia e a anexa sob pai, ou sob a raiz da cena ativa quando pai é null.
  • PrefabReference<T>.InstantiateAsync(scenes) faz o mesmo e retorna o componente T da cópia.
  • InstantiateAsync(componente) clona a hierarquia que contém um componente já presente na cena.

Cada cópia é independente: depois de criada, alterá-la não afeta o prefab nem as outras cópias.

Editando um prefab

Clique duas vezes no .prefab no painel Assets para abri-lo em sua própria aba, altere e salve. Toda cópia criada depois reflete a mudança. Para mover nós entre cenas abertas, use Copy e Paste na Scene Tree.

Ainda não disponível

Instâncias de prefab vinculadas colocadas no editor, sobrescritas por instância e propagação de prefabs aninhados não fazem parte do Turian 1.0. Hoje, a instanciação é uma cópia feita em tempo de execução.


← Toda a documentação Editar esta página