Menu
CoddyTech

Buscar por nombre

Parte de la sección Fundamentos de scripting en Unity del Journey de Unity de Coddy. Lección 42 de 67.

GameObject.Find("Player") busca en la escena un objeto activo con ese nombre exacto y lo devuelve, o devuelve null si no hay ninguno. Evita conectar un campo en el Inspector, con un costo: busca entre todos los objetos de la escena. Así que llámalo una vez, en Start(), y guarda el resultado en un campo. Esta cámara de seguridad encuentra al Player cuando empieza el juego y lo sigue en cada fotograma:

private Transform player;

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

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

El nombre debe coincidir exactamente, incluidas las mayúsculas y los espacios: "player" o "Player " no encuentran nada. Find también omite los objetos inactivos (ocultos). Una búsqueda fallida devuelve null silenciosamente, y el error aparece en la siguiente línea que usa el resultado: aquí, .transform lanza NullReferenceException. Una ruta como "Car/Wheel" encuentra Wheel, que es un objeto secundario de Car.

challenge icon

Desafío

Intermedio

El rover informa de lo lejos que está su objetivo.

  • En Start(), encuentra el objeto llamado Goal y guarda su Transform en goal.
  • Cada vez que se pulse Space, registra la distancia del rover al objetivo, como Distance to goal: 5.

El objetivo puede moverse, así que mide la distancia en el momento en que se pulse Space.

Pulsa Play, haz clic en el juego y pulsa Space, después Check.

Pruébalo tú mismo

using UnityEngine;

public class Beacon : MonoBehaviour
{
    private Transform goal;

    void Start()
    {
        // Busca el objeto llamado Goal y guarda su Transform en goal.
    }

    void Update()
    {
        // Space: registra la distancia al objetivo.
    }
}
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Fundamentos de scripting en Unity