Menu
CoddyTech

Las referencias superan a Find

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

Un script puede acceder a otro objeto de cuatro maneras: mediante un campo configurado en el Inspector, con GameObject.Find por nombre, mediante una búsqueda por etiqueta o con FindAnyObjectByType por tipo. Para un objeto que está en la escena desde el principio, el código de Unity usa el campo del Inspector por tres razones:

  • Rapidez. La referencia se asigna antes de que empiece el juego. Cada búsqueda recorre los objetos de la escena, y una búsqueda en Update() lo hace en cada fotograma.
  • Seguridad. Un nombre en una cadena de texto deja de funcionar cuando alguien cambia el nombre del objeto: Find devuelve null y el error aparece más tarde, en la línea que lo usa. Un campo vacío del Inspector produce UnassignedReferenceException, que indica el nombre del campo y del script.
  • Claridad. El Inspector muestra de qué depende un script. Una llamada a Find lo oculta dentro del código.
// se asigna una sola vez en el Inspector: no hay búsqueda y cambiarle el nombre no afecta a nada
[SerializeField] private Transform door;

// se busca en cada fotograma y queda null después de cambiarle el nombre a la puerta
void Update()
{
    Transform d = GameObject.Find("Door").transform;
}

Las búsquedas tienen su utilidad: para objetos que solo existen una vez que el juego está en marcha, como uno que aparece mientras juegas, y para scripts que deben funcionar en cualquier escena. Incluso entonces, busca una sola vez en Start() y guarda el resultado en un campo.

Pruébalo tú mismo

Esta lección no incluye un desafío de código.

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