
Uno de los aspectos fundamentales a dominar en Unity 3D es la gestión de componentes en los objetos. Estos Component son dependencias instanciadas de otras clases, que añaden ciertas funcionalidades a nuestro objeto.
Por ejemplo, podemos tener un GameObject vacío, que al añadirle el componente de RigidBody, le agregamos las propiedades necesarias en una simulación física. O añadirle un componente de tipo Collider para lanzar eventos de colisiones entre objetos.
Los componentes le dan una potencia extrema a Unity 3D, ya que nos permite reutilizar código de forma sencilla.
Por tanto, el manejo de esta funcionalidad es imprescindible para nuestros desarrollos. A continuación veremos como añadir, obtener y quitar Component de nuestros GameObject.
1 – Añadir componentes en Unity 3D
Existen 3 formas de hacerlo:
- Usando el editor gráfico (por defecto desde el awake en el objeto)
- Mediante script, añadiéndolo cuando sea necesario
- Mediante script, usando RequireComponent (por defecto desde el awake en el objeto)
1.1 – Usando el editor gráfico
Usando el editor de Unity es el equivalente al 3º método, usando RequireComponent mediante scripts. Es muy cómodo, porque en dos clics la dependencia esta creada, pero tiene la desventaja de que es un proceso que hay que hacerlo con todos los objetos en los que se quiera crear la dependencia. Pasos a seguir:
- Seleccionar el objeto en el que se quiera añadir el componente (en este ejemplo el objeto “GameObject”)
- Elegir el componente a añadir. Es muy cómodo usar el buscador, escribiendo el Type del objeto (en este ejemplo “RigidBody”)
- Al añadir veremos que dentro del objeto, aparece un nuevo Tab con la información del componente



1.2 – Usando AddComponent
El método “AddComponent” de GameObject añade una clase como componente a un gameobject. Allí donde necesitemos añadir el componente, dos formas de hacerlo:
1 |
Rigidbody sc = gameObject.AddComponent("Rigidbody") as Rigidbody; |
o
1 |
Rigidbody sc = gameObject.AddComponent<Rigidbody>(); |
Personalmente, siempre uso la segunda.
1.3 – Usando RequireComponent
El atributo RequireComponent añade automáticamente un componente como dependencia de nuestra clase. Lo añade en el equivalente a hacer mediante scripts (lo que hemos visto con AddComponent) en el método Awake del gameobject. La ventaja de usar este tag, es que se agregará automáticamente el componente necesario para el GameObject desde el inicio.
Es muy útil cuando se sabe que el objeto va a necesitar un componente en concreto durante sus llamadas, y se evitan errores al usar GetComponent.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
using UnityEngine; // El GameObject requiere un componente Rigidbody [RequireComponent (typeof (Rigidbody))] public class PlayerScript : MonoBehaviour { Rigidbody rb; void Start() { rb = GetComponent<Rigidbody>(); } void FixedUpdate() { rb.AddForce(Vector3.up); } } |
2 – Obtener instancia de un componente del GameObject
Para obtener la instancia de un componente de nuestro gameobject se usa el método “GetComponent”. Dos formas de usarlo:
1 |
var rb =gameObject.GetComponent("Rigidbody") as Rigidbody; |
o
1 |
var rb = GetComponent<Rigidbody>(); |
Personalmente, siempre uso la segunda.
3 – Quitando un componente usando Destroy
Para quitar un componente mediante scripts, hay que pasar al método Destroy la instancia del componente a quitar.
1 |
Destroy (GetComponent<Rigidbody>()); |
Si el componente lo hubiéramos añadido gráficamente, también se puede quitar de la misma forma.

Javi Giner
Latest posts by Javi Giner (see all)
- IIS Express Visual Studio, como configurar para permitir conexiones remotas - febrero 26, 2016
- Evento solidario sobre Innovación - diciembre 14, 2015
- Uso de Component en Unity - noviembre 10, 2015