Menu
CoddyTech

Encontrar por nome

Parte da seção Noções básicas de scripting no Unity do Journey de Unity da Coddy. Lição 42 de 67.

GameObject.Find("Player") procura na cena um objeto ativo com exatamente esse nome e o retorna, ou retorna null quando não há nenhum. Isso evita configurar um campo no Inspector, com um custo: ele percorre todos os objetos da cena. Portanto, chame-o uma vez, em Start(), e mantenha o resultado em um campo. Esta câmera de segurança encontra o Player quando o jogo começa e o observa em todos os frames:

private Transform player;

void Start()
{
    player = GameObject.Find("Player").transform;
}

void Update()
{
    transform.LookAt(player);
}

O nome deve corresponder exatamente, incluindo letras maiúsculas e espaços: "player" ou "Player " não encontra nada. Find também ignora objetos inativos (ocultos). Uma busca malsucedida retorna null silenciosamente, e o erro aparece na próxima linha que usa o resultado: aqui, .transform gera NullReferenceException. Um caminho como "Car/Wheel" encontra Wheel, que é filho de Car.

challenge icon

Desafio

Médio

O rover informa a que distância está de seu objetivo.

  • Em Start(), encontre o objeto chamado Goal e mantenha seu Transform em goal.
  • Cada vez que a tecla Espaço for pressionada, registre a distância do rover até o objetivo, como Distance to goal: 5.

O objetivo pode se mover, então meça no momento em que a tecla Espaço for pressionada.

Pressione Jogar, clique no jogo e pressione Espaço, depois Verificar.

Experimente você mesmo

using UnityEngine;

public class Beacon : MonoBehaviour
{
    private Transform goal;

    void Start()
    {
        // Encontre o objeto chamado Goal e armazene seu Transform em goal.
    }

    void Update()
    {
        // Space: registre a distância até o objetivo no log.
    }
}
quiz iconTeste seus conhecimentos

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