Introducción
En este artículo vamos a ver cómo hacer para conocer el estado de un GameObject cualquiera a través de código. Los GameObjects son los elementos de la escena que se utilizan para modelar todo cuanto exista en nuestro proyecto en Unity. Una de las propiedades básicas que tienen estos GameObjects es su estado de activación, en la ventana inspector puede verse como una casilla que al estar marcada el GameObject se encuentra ACTIVO y si la casilla está desmarcada el GameObject se encuentra INACTIVO.
En el siguiente vídeo explico cómo saber si un GameObject está ACTIVO o INACTIVO en la escena en Unity a través de código
Procedimiento para saber si un GameObject está ACTIVO o INACTIVO en la escena
Vamos a asumir que ya existe un script creado y asignado a un GameObject en Unity para que sus instrucciones puedan ejecutarse.
Paso 1 – Definir REFERENCIA
Para resolver practicamente cualquier problema en Unity tenemos que partir por las variables que vamos a utilizar, en este caso necesitamos contar con la referencia del GameObject que queremos analizar, en otras palabras, en nuestro script definiremos una variable global de tipo GameObject, por ejemplo de la siguiente manera:
public GameObject myGameObject
Paso 2 – Inicializar REFERENCIA
La variable que definimos en el paso anterior no va a apuntar automáticamente al GameObject que nos interesa conocer si está ACTIVO o INACTIVO en la escena, tenemos que ocuparnos de que eso pase.
Existen diversas formas de inicializar una variable, en mi canal tengo una lista de reproducción con más de 20 vídeos donde se ven métodos y ejemplos sobre este tema, en este caso vamos a ir al inspector donde tenemos asignado el script y vamos a arrastrar manualmente el GameObject que nos interesa analizar a la variable tipo GameObject que aparece en el inspector, en nuestro caso llamada”myGameObject”. De esta manera ahora esa variable apuntará al GameObject que nos interesa.
Paso 3 – Cómo LEER el estado del GameObject
Una vez resuelto los dos pasos previos ahora podemos utilizar la variable que definimos para saber si el GameObject se encuentra ACTIVO o INACTIVO en la escena. Para esto usamos la siguiente instrucción.
myGameObject.activeInHierarchy
La instrucción anterior es equivalente a un valor booleano, si el GameObject al que está apuntando la variable “myGameObject” está activo en la escena la expresión dará como resultado “true”, mientras que si está inactivo dará como resultado “false”. Por lo tanto podemos usar esta expresión para hacer lo que queramos, por ejemplo definir una sentencia IF e imprimir un mensaje en consola si el objeto está activo y un mensaje distinto si está inactivo, por ejemplo:
if(myGameObject.activeInHierarchy){
Debug.Log(“El GameObject está ACTIVO”);
}else{
Debug.Log(“El GameObject está INACTIVO”);
}