En Unity crearemos un script en lenguaje C# (C Sharp) con el fin de automatizar tareas.
Un script es un asset de código:
“El cual, añadido o creado en el Project se define como una clase (que hereda de MonoBehaviour” por defecto)
- Este script simultáneamente pasa a consolidar un componente SOLO SI lo enlazamos a un GameObject. Lo que en general representa una instanciación del script como clase.
Script Asset (Clase) --> Script Component (Instancia).
Ciclo de vida de un Script:
- Al instanciar el script como componente de un GameObject, el objeto estará constantemente comunicándole información (estado, actualización de frames, etc.)
MonoBehaviour
“Mensajes” comunes de Unity al script y su orden de ejecución (LifeCycle)
- Awake
○ Sucede antes del Start.
- OnEnable
○ funcionan cuando se activa un GameObject
- Start,:
○ se ejecuta cuando el objeto es activado por primera vez.
Nota: Al darle play al juego se activaran en cada objeto, por uno a la vez, su Awake y OnEnable y recién entonces se activa el Start. Atención a posibles sorpresas con OnEnables.
- OnMouseDown
○ Sucede cuando un Collider del GameObject es clickeado por el Player - Update
○ Antes de “pintar” cada frame
Al dar STOP al juego se disparan:
- OnDisable
○ También se ejecuta cuando se desactiva o destruye un GameObject. - Destroy
se ejecuta una sola vez: Cuando el objeto es destruido.- Reset
○ Sólo sucede durante la edición. El GameObject lo llama cuando un componente le es añadido.
- Reset
Creando un Script: múltiples formas
Ante todo, el orden de las carpetas.
○ Dentro de Assets vamos a crear una carpeta Scripts, para ubicar nuestro script dentro de esta.
1. Podemos hacer click derecho en la ventana de Project
○ -> Create -> C# Script
Ó
2. Desde dentro de un GameObject, como componente
○ En Inspector click al botón Add Component y en la barra de búsqueda, directamente escribimos el nombre que pondremos a nuestro script. Nos dará la opción NewScript
NOTA: No es necesario explicitar la extensión .cs.
Recordar que el nombre, al ser una Clase, por convención comienza en mayúsculas.
Detalle: por este medio, el script queda creado en la carpeta de proyecto raíz.
##Editar
Doble click sobre el ícono del script -> Este se abrirá en el IDE determinado (VisualStudio). Puedes usar el que prefieras.
- Tip: Desde el IDE puedes abrir tu script seleccionando la carpeta que los contiene a todos(**Scripts**).
- ### HolaMundo
- Llamamos nuestro primer método dentro de la clase **Start ()** {
**Debug.Log("Hola! desperté");**
}
- Hasta ahora este script es un Asset, no se inicializará ni ejecutará al dar PLAY, a menos que lo agreguemos como componente de un GameObject.
Entonces sí veremos el mensaje en consola, una sola vez.
- Si queremos que el mensaje se envíe en cada activación, tenemos que invocarlo dentro del método **OnEnable() {…}**
NOTA: la consola colapsa los mensajes repetidos por defecto, para preservar visibilidad.
- SPAM!
Si implementaramos el mensaje dentro del método Update () {
Veremos que este se envía una vez por frame, constantemente.
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?