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.
En el siguiente vídeo explico cómo extraer una componente de un GameObject en Unity.
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.
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.
Cómo obtener la referencia de una COMPONENTE asignada a un GameObject
Consideremos que tenemos la referencia de un GameObject y sabemos que ese GameObject tiene una determinada componente asignada, por ejemplo un AudioSource, un RigidBody, una Camara o un Script que nosotros mismos creamos y le asignamos.
A partir de la referencia de este GameObject podemos acceder a las referencias de las componentes que tiene asignada, para eso usamos la variable que contiene el GameObject y con el operador punto ejecutamos la función GetComponent<T>(), siendo T el tipo de componente.
La función GetComponent dá como resultado el componente tipo T que se encuentra asignado al GameObject o devuelve null si ese GameObject no tiene una componente de ese tipo. Este resultado lo podemos asignar a una variable que sea del mismo tipo T y de esa forma conservar la referencia para usarla más adelante.