Referências vencem Find
Parte da seção Noções básicas de scripting no Unity do Journey de Unity da Coddy. Lição 45 de 67.
Um script pode acessar outro objeto de quatro maneiras: um campo definido no Inspector, GameObject.Find pelo nome, uma busca por tag ou FindAnyObjectByType pelo tipo. Para um objeto que está na cena desde o início, o código do Unity usa o campo do Inspector, por três motivos:
- Velocidade. A referência é preenchida antes do início do jogo. Cada busca percorre os objetos da cena, e uma busca em
Update()faz isso a cada quadro. - Segurança. Um nome em uma string deixa de funcionar quando alguém renomeia o objeto: Find retorna
nulle o erro aparece depois, na linha que o usa. Um campo vazio do Inspector gera UnassignedReferenceException, que indica o campo e o script. - Clareza. O Inspector mostra de que o script depende. Uma chamada Find oculta essa dependência dentro do código.
// definido uma vez no Inspector: sem buscas, e renomear não altera nada
[SerializeField] private Transform door;
// buscado a cada quadro, e null depois que a porta é renomeada
void Update()
{
Transform d = GameObject.Find("Door").transform;
}As buscas têm seu lugar: objetos que só existem depois que o jogo começa, como um objeto instanciado durante o jogo, e scripts que precisam funcionar em qualquer cena. Mesmo nesses casos, faça a busca uma vez em Start() e mantenha o resultado em um campo.
Experimente você mesmo
Esta lição não inclui um desafio de código.
Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Noções básicas de scripting no Unity
1Seu primeiro script
Olá, UnityPosicione o cuboMova a cada quadroGire a cada segundoConduza com as teclasRecapitulando: dirija o cubo4Vetores
Adicionando vetoresDireçõesEspaço local e espaço do mundoVelocidade diagonalDistância entre objetosVector3 é uma structRevisão: piloto de drone7Projeto: Pegue a Estrela
O ApanhadorUma Estrela Cadente10O ciclo de vida dos scripts
Awake e StartUpdate e LateUpdateOnEnable e OnDisableA ordem do ciclo de vidaRevisão: registrador do ciclo de vida5Transformações e Hierarquia
Pais e FilhosEscalaObserve as CoisasMova-se em Direção a um PontoRevisão: Lua em Órbita8Encontrando coisas
Encontrar por nomeTagsEncontrar por tipoReferências vencem FindO null do UnityRevisão: moeda mais próxima6GameObjects e Componentes
Referências no InspectorObter um ComponenteComponentes AusentesAdicionar um ComponenteRequireComponentMostrar e OcultarRevisão: Interruptor de Luz