¿Qué es un Componente? En Unity3D, un
Component (Componente) es cada uno de los atributos, colección de propiedades, comportamientos, o características que definen a un
GameObject y lo diferencian de otro. Para entendernos, es todo aquel
Script o "trozo de código" que se
"pega" a un
GameObject para definir sus características.
Unity asigna, internamente y por defecto, unos
Componentes concretos para cualquier
GameObject:
CUALQUIER GameObject, cómo mínimo siempre tendrá disponible el Componente de Transform. Es una estructura de coordenadas para Posición, Rotación y Escala.
CUALQUIER GameObject, como mínimo siempre tendrá disponible un Componente interno (no visible en el Inspector) que es el propio GameObject. Se usa para referenciar al propio GameObject y sus propiedades más básicas y de más bajo nivel de acceso, como su Nombre, Tag, Layer, id en memoria, etc...
Los GameObject de tipo Primitva o modelo/malla 3D suelen añadir los Componentes MeshFilter y MeshRenderer, que definen y visualizan que son modelos 3D.
La Cámara es un GameObject especial porque tiene un Componente Camera, con una serie de propiedades que definen y le dan su comportamiento propio.
La mayoría de los GameObjects pueden tener un Componente para físicas, de tipo RigidBody, o de Collider, etc. Éstos añaden propiedades para gestionar su física.
Etc, etc...
Y, adicionalmente, al ser
Scripts (Ficheros que contienen código), los
Componentes son precisamente eso,
Scripts que añadimos a un
GameObject, y que pueden afectarle a él, o a otros
GameObjects, o incluso a toda la Escena o al Proyecto completo.
(http://image.prntscr.com/image/167f060203004c968df2ce4f7972c4be.jpeg)
Unity nos permite programar y usar nuestros propios
Componentes, lo cual nos permite personalizar prácticamente todo lo que Unity puede ofrecer. Incluso nos permite personalizar y hacer variaciones de los que el motor usa internamente.
En Unity no veremos ningún
Script Principal" o
Main, que dicte lo que hace el resto de cosas. Sólo necesitamos saber que cualquier elemento de nuestro proyecto puede ser programado como si fuera un módulo independiente, usando
Componentes.
Los
Componentes o
Scripts que nosotros creamos y queramos que afecten a los
GameObjects o a la Escena, suelen derivar de una clase llamada
MonoBehavior. Esta característica es la principal que permite programar cualquier cosa durante la carga o ejecución del videojuego hecho en Unity.
Cuando se pulsa el
Botón de Play de la Interfaz de Unity, o se ejecuta nuestra aplicación, internamente el motor busca y llama a todos los
GameObjects que tengan un
Componente que derive de
MonoBehavior, y llama a cada uno, a sus correspondientes funciones Start(), Update(), etc...
Entender estos conceptos es
crucial para saber cómo desarrollar videojuegos con Unity, ya que es lo que le diferencia de otros motores, por ejemplo los que se basan sólo en Código, y dependen de un
"Código Principal", o
Maestro (Main), dónde es ESE quien manda sobre los demás, y quien llamará al resto...
Para programar
Componentes, es necesario un conocimiento previo mínimo, sobre
Scripting y Lenguajes de Programación. En Unity se puede programar conociendo los lenguajes
Javascript o
C#. Físicamente, dentro de un Proyecto
(dentro de la ventana Project) encontraremos ficheros con extensión
.js o
.cs, que son los
Scripts o
Componentes de nuestro Proyecto.
Si hemos entendido correctamente todo este temario, enhorabuena. Acabas de aprender
LO MÁS DIFÍCIL de todo lo que se requiere para usar Unity3D.