Referências são melhores que Find
Parte da seção Fundamentos de Scripting no Unity do Journey de Unity da Coddy. Lição 59 de 85.
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.
Todas as lições de Fundamentos de Scripting no Unity
1Fundamentos de C# no Unity
Olá, UnityVariáveisDecimais precisam de um fTexto no ConsoleVariáveis que guardam valoresIf e ElseComparar númerosRevisão: Coletor de Moedas7Laços e Métodos
Repita com forLaços dentro de laçosEscreva um métodoMétodos que respondemArraysRevisão: Escada10Encontrando coisas
Buscar pelo nomeTagsBuscar por tipoReferências são melhores que FindO null do UnityRevisão: moeda mais próxima13Projeto: Desvie dos Blocos
O CorredorBlocos do Céu2Faça-o se mover
Posicione o cuboMova a cada quadroGire a cada segundoDirija com as teclasRecapitulando: dirija o cubo5Vetores
Somando vetoresDireçõesEspaço local e globalVelocidade diagonalDistância entre objetosVector3 é uma structRevisão: piloto de drone8GameObjects e Componentes
Referências no InspectorObter um componenteComponentes ausentesAdicionar um componenteRequireComponentMostrar e ocultarRevisão: Interruptor de luz6Transformações e hierarquia
Pais e filhosIçar a bandeiraEscalaOlhar para as coisasMover-se em direção a um pontoRevisão: Lua em órbita9Projeto: Pegue a Estrela
O PegadorUma Estrela CadentePratique por conta própria: Playground de Unity