¿Qué es un GameObject en Unity?

Introducción

Desde el punto de vista de la programación, un GameObject en Unity es una clase de programación, sin embargo el concepto va mas allá de eso, en Unity un GameObject es la unidad básica para construir cualquier cosa que se necesite en una escena, cada GameObject perteneciente a una escena se encuentra listado en la jerarquía de Unity. En este artículo encontrarás información detallada sobre sus características y funciones, antes de avanzar dejo un vídeo con un análisis completo sobre el concepto de GameObject.

Te recomiendo el siguiente vídeo en el que hago un análisis del concepto de GameObject en Unity


Características básicas de un GameObject

Vamos a ver cuáles son las características y componentes básicos de un Empty GameObject que es el más general que podemos agregar en una escena de Unity.

Consideremos que tenemos un Empty GameObject en la escena llamado «Objeto1», con este GameObject vamos a ejemplificar la manera de acceder a sus componentes.

Componente Transform

Los GameObjects como mínimo tendrán un componente Transform que indicará su posición, rotación y escala en la escena.

Podemos acceder a la referencia de su componente Transform utilizando el operador punto de la siguiente manera:

objeto1.transform

Si quisiéramos acceder al Vector3 que representa la posición del GameObject en la escena nuevamente usamos el operador punto de la siguiente manera:

objeto1.transform.position

Si quisiéramos acceder al float que representa la componente y de la posición del objeto en la escena podemos hacer lo siguiente:

objeto1.transform.position.y

Lo mismo se aplica para los demás miembros del componente Transform

objeto1.transform.rotation

objeto1.transform.scale

Tags o Etiquetas

Un GameObject tiene un Tag asignado que permite distinguirlo de otros GameObjects de la escena, listarlo utilizando ese Tag o realizar alguna función si el objeto tiene asignado un determinado Tag.

Layers o Capas

Las Layers se asignan a los GameObjects y del mismo modo que los Tags nos permiten listarlos y realizar acciones si el GameObject pertenece a determinada layer.

Una aplicación más interesante de las Layers es en el renderizado de los GameObjects. Podemos configurar varias cámaras en la escena y hacer que cada cámara capte una o más Layers en particular.

Método GetComponent

Este método permite obtener la referencia de un componente de algún tipo específico que esté asignado al GameObject. Para saber qué es un método en programación puedes hacer clic aquí.

Supongamos que nuestro objeto se llama «objeto1» tiene asignado un componente tipo AudioSource porque emite algún tipo de sonido y nos gustaría acceder a ese componente y tal vez modificar el volumen. Podemos usar este método de la siguiente manera:

objeto1.GetComponent<AudioSource>();

Esto nos dá la referencia del AudioSource que tenga asignado. En el caso de que el GameObject tenga más de un componente de ese tipo, podemos hacer lo siguiente:

objeto1.GetComponents<AudioSource>();

Esto devuelve un Array que contiene todos los componentes de ese tipo que el objeto tenga asignado.

Método SetActive

Este método permite activar o desactivar el GameObject en la jerarquía, el resultado es equivalente a marcar o desmarcar el tilde que se encuentra en la parte superior del inspector cuando el objeto está seleccionado.

Para activarlo hacemos:

objeto1.SetActive(true);

Para desactivarlo:

objeto1.SetActive(false);

Flexibilidad para construir GameObjects complejos

Hemos mencionado que el Empty GameObject es el tipo de objeto más simple que podemos encontrar en una escena en Unity.

Podemos personalizar estos objetos tanto como necesitemos, añadirles componentes preexistentes en el motor Unity o nuestros propios Scripts de programación. Esto hará que cada GameObject tenga un comportamiento especializado.

Conclusión

Hemos visto qué es un GameObject en Unity, cuáles son sus componentes principales y la posibilidad de agregar tantas componentes como sean necesarias para construir los objetos que necesitemos en nuestro mundo.

El objeto más simple que pueda haber en una escena tendrá asignado un componente Transform que indiciará su posición, rotación y escala en la escena. Tendrá asignados un Tag y un Layer que permiten agrupar objetos y realizar funciones apropiadas para cada grupo.

En el ámbito de la programación GameObject es una clase de programación, que cuenta con campos y métodos que lo definen. Se puede consultar el listado de todos sus miembros en la API de Unity.

Scroll al inicio
Secured By miniOrange