Menu
CoddyTech

Buscar pelo nome

Parte da seção Fundamentos de Scripting no Unity do Journey de Unity da Coddy. Lição 56 de 85.

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 conectar um campo no Inspector, mas tem um custo: procura em 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 a cada quadro:

private Transform player;

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

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

O nome precisa corresponder exatamente, incluindo 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 lança NullReferenceException. Um caminho como "Car/Wheel" encontra Wheel, que é filho de Car.

challenge icon

Desafio

Médio

O rover informa a distância até seu objetivo.

  1. Em Start(), defina goal = GameObject.Find("Goal").transform;.
  2. Em Update(), quando Input.GetKeyDown(KeyCode.Space) for acionado, registre "Distance to goal: " + Vector3.Distance(transform.position, goal.position).

Pressione “Jogar” e pressione Espaço: o Console exibe Distance to goal: 5. Depois, clique em “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.
    }
}

Todas as lições de Fundamentos de Scripting no Unity

Pratique por conta própria: Playground de Unity