Prefabs

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

Um prefab é uma árvore de nós salva como arquivo .prefab — o mesmo formato de uma cena. Qualquer cena pode ser usada como prefab, e qualquer prefab pode ser aberto e editado como uma cena. A diferença está no uso: uma cena é carregada; um prefab é instanciado dentro de algo já carregado.

Criando um prefab

  1. No painel Assets, clique com o botão direito em uma pasta → New → Scene e dê um nome, por exemplo Crate.
  2. Clique duas vezes para abri-lo em sua própria aba.
  3. Monte o objeto: adicione nós na Scene Tree e componentes no Inspector. Use Copy e Paste na Scene Tree para trazer nós de outra cena aberta.
  4. Salve com Ctrl+S.

Referenciando um prefab em um componente

Tipo do campo Use quando
AssetReference<Prefab> Você só precisa da árvore de nós criada.
PrefabReference<T> Você quer um componente T específico da cópia criada.

Arraste o .prefab do painel Assets para o campo no Inspector.

Instanciando

public class CrateSpawner : Component
{
    public PrefabReference<ModelComponent>? Crate;
    public int Count = 5;

    public override async void OnStart()
    {
        var scenes = RuntimeServices.TryGet<ISceneManager>();
        if (scenes is null || Crate is null) return;

        for (var i = 0; i < Count; i++)
        {
            var model = await Crate.InstantiateAsync(scenes, Node);
            model.Node!.Transform.Position = new Vector3(i * 1.5f, 0, 0);
        }
    }
}
Chamada Resultado
scenes.InstantiateAsync(referência, pai) Carrega o prefab e adiciona uma cópia sob pai (ou sob a raiz da cena ativa quando null). Retorna a raiz da cópia.
scenes.InstantiateAsync(assetId, pai) O mesmo, a partir do id do asset.
prefabReference.InstantiateAsync(scenes, pai) O mesmo, retornando o componente T encontrado na cópia. Lança exceção se o prefab não tiver um.
scenes.InstantiateAsync(componente, pai) Clona a árvore de nós que contém um componente já presente em uma cena.

Os componentes de uma cópia despertam assim que ela é criada e começam no próximo quadro, como tudo o mais na cena.

Removendo uma cópia

Desative-a com node.IsActive = false, ou remova-a da lista Children do pai — por exemplo, para devolvê-la a um pool.

O que os prefabs ainda não fazem

As cópias são instantâneos independentes. O Turian 1.0 não tem instâncias de prefab vinculadas colocadas no editor, nem sobrescritas por instância, nem propagação de edições do prefab para cópias já existentes. Prefabs aninhados funcionam como aninhamento simples: um prefab pode instanciar outros prefabs a partir dos próprios componentes em tempo de execução.


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