Encontrar GameObject de la escena por TAG (Etiqueta) en Unity

Introducción

Este artículo pertenece a la serie sobre encontrar las referencias de GameObjects y Componentes en Unity, en esta serie se verán distintas técnicas para encontrar desde un Script cualquier objeto que esté en la jerarquía en una determinada escena en Unity, esto es algo muy importante que hay que entender y saber cómo hacerlo ya que si contamos con la referencia de un objeto o componente, podremos accederlo y leer cualquier dato público o ejecutar cualquier función pública que necesitemos.

Aquí tienes la lista de reproducción sobre encontrar las referencias en Unity, en esa lista se irán añadiendo vídeos con técnicas cada vez más específicas. El siguiente vídeo habla sobre la técnica que se muestra en este artículo:


Condiciones iniciales

Partimos de un Script llamado “FindReferenceOfAnObject” en el que vamos a encontrar la referencia de un cierto GameObject que está en la escena en Unity, dentro del Script usaremos esa referencia para imprimir su nombre en consola con la instrucción de la línea 13 de la figura 1.

Fig. 1: Script que vamos a utilizar para ver los distintos métodos.

La jerarquía de la escena que vamos a usar está compuesta por los GameObjects que se observan en la figura 2, el objeto “Script-GameObject” es el que tiene asignado el Script de la figura 1 y es el que se encargará de encontrar las referencias, en la figura 3 se ve el inspector de este GameObject, donde está asignado el Script.

El objeto “GDT (Object to Find)” que se ve en la figura 2 es el objeto que tenemos que encontrar, así que si tenemos éxito deberíamos ver ese nombre impreso en consola.

Fig. 2: Jerarquía de la escena que vamos a utilizar para encontrar las referencias.
Fig. 3: Inspector del GameObject que tiene asignado el Script para encontrar referencias.

Cómo encontrar un GameObject de la escena por su TAG o ETIQUETA en Unity

Uno de los elementos que tiene todo GameObject en Unity es un Tag o etiqueta, se encuentra en la cabecera del inspector, como vemos en la figura 4. Podemos usar esta etiqueta para encontrar la referencia del GameObject de la escena en nuestro Script.

Por defecto los GameObjects tendrán asignado el Tag “Untagged”, pero podemos asignar uno de los Tags que vienen predefinidos o crear nuevos Tags, en las figuras 4 y 5 muestro cómo crear un nuevo Tag en Unity.

Fig. 4: Pestaña para crear un nuevo Tag en Unity.
Fig. 5: Se introduce un nombre para el Tag y se guardan los cambios.

Una vez que hemos creado el Tag tenemos que asignarlo al objeto, volvemos a seleccionar el GameObject en el inspector desplegamos la ventana del Tag y lo elegimos, como se observa en la figura 6.

Fig. 6: Se asigna el Tag creado al objeto que se quiere encontrar la referencia en el Script.

Ahora estamos en condiciones de encontrar ese GameObject utilizando el Tag, para ello ejecutamos el método “FindGameObjectWithTag” de la clase GameObject y pasamos como parámetro el nombre del Tag que se quiere buscar. En la figura 7 vemos esta instrucción en la línea 16, noten que el nombre del Tag se ha definido en un String en la línea 11 y luego en la línea 16 pasamos como parámetro la variable.

Fig. 7: Instrucción para encontrar la referencia de un GameObject de la escena a través de su Tag.

Cuando se ejecute esta instrucción, Unity revisará todos los objetos de la jerarquía hasta que se encuentre con un GameObject que tenga ese tag asignado, en ese punto devuelve el objeto y nos queda almacenado en el campo “objectToFind”. Si no hay ningún objeto que tenga ese Tag, el campo “objectToFind” tendrá valor null.

Para tener en cuenta, si tenemos más de un GameObject que tiene el mismo Tag asignado, Unity nos devolverá el primero de ellos que encuentre en su registro, en este caso pueden surgir ambigüedades, podríamos obtener la referencia de un objeto distinto al que queremos.

Salir de la versión móvil
Secured By miniOrange