El comportamiento de los GameObjects es controlado por los Components que están adjuntos. Aunque los Componentes integrados de Unity pueden ser muy versátiles,usted va a ver que va a necesitar ir más allá de lo que estos pueden proporcionar para implementar las características propias de su juego. Unity le permite a usted crear su propio Componente utilizando scripts. Estos le permite a usted trigger (activar/desactivar) eventos de su juego, modificar propiedades del Componente en el tiempo y responder al input del usuario de la forma que usted quiera.
Unity soporta dos lenguajes nativamente:
Adicional a estos, otros lenguajes .NET pueden ser utilizados con Unity si estos compilan un DLL compatible - ver aquí para más detalles.
Aprender el arte de programar y el uso de estos lenguajes en particular, va más allá del alcance de esta introducción. Sin embargo, hay muchos libros, tutoriales y otros recursos para aprender cómo a programar con Unity. Vea la Learning section de nuestra página web para más detalles.
A diferencia de la mayoría de otros assets, los scripts son usualmente creados dentro de Unity directamente. Usted puede crear un nuevo script desde el menú Create en la parte superior izquierda del panel del Proyecto o seleccionando Assets > Create > C# Script (o JavaScript) desde el menú principal.
El nuevo script será creado en la carpeta que usted haya seleccionado en el Panel del Proyecto. El nuevo nombre del archivo script será seleccionado, pidiéndole a usted que ingrese otro nuevo nombre.
Es una buena idea ingresar el nombre del nuevo script en este punto en vez de editarlo después. El nombre que usted ingrese será utilizado para crear el texto inicial dentro del archivo, como es descrito abajo.
When you double-click a script Asset in Unity, it will be opened in a text editor. By default, Unity will use Visual Studio, but you can select any editor you like from the External Tools panel in Unity’s preferences (go to Unity > Preferences).
Los contenidos iniciales del archivo se verán algo como esto:
using UnityEngine;
using System.Collections;
public class MainPlayer : MonoBehaviour {
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
}
}
Un script hace sus conexiones con el funcionamiento interno de Unity al implementar una clase que deriva desde la clase integrada llamada MonoBehaviour. Usted puede pensar una clase como un tipo de plano (blueprint) para crear un nuevo tipo de Component que puede ser adjuntado a GameObjects. Cada vez que usted adjunte un componente script a un GameObject, éste crea una nueva instancia del objeto definido por el plano. El nombre de la clase es tomado desde el nombre que usted proporciona cuando el archivo se crea. El nombre de la clase y el archivo se debió suministrar cuando el archivo fue creado. El nombre de la clase y el archivo debe ser el mismo para permitirle al componente script en ser adjuntado al GameObject.
La primera cosa para tener en cuenta son dos funciones definidas dentro de la clase. La función Update es el lugar para colocar el código que se encargará de la actualización por frame para el GameObject. Este puede incluir movimiento, acciones de trigger y responder al input del usuario, básicamente cualquier cosa que necesite ser manejado en el tiempo durante el gameplay. Para que la función Update haga su trabajo, a veces es útil configurar variables, leer preferencias y hacer conexiones con otros GameObjects antes de que cualquier acción del juego tome lugar. La función Start va a ser llamada por Unity antes de que el gameplay comience (ie, antes de que la función Update sea llamada por la primera vez) y es un lugar ideal para hacer cualquier inicialización.
Recomendación para programadores con experiencia: Usted puede sorprenderse que la inicialización de un objeto no es hecho utilizando una función constructora. Esto se debe a que la construcción de los objetos es manejado en el editor y no toma lugar al comienzo del gameplay como usted podría suponer. Si usted intenta definir un constructor para un componente script, éste va a interferir con la operación normal de Unity y puede causar problemas mayores con el proyecto.
Una script de UnityScript funciona un poco diferente a un script de C#:
# pragma strict
function Start () {
}
function Update () {
}
Aquí, las funciones Start y Update tienen el mismo significado pero la clase no está explícitamente declarada. El script en sí mismo es asumido para definir la clase; éste va a derivar implícitamente desde MonoBehaviour y toma su nombre desde el nombre del archivo (filename) del asset script.
Como es dicho arriba, un script solo define un plano para un Component por lo que nada de su código será activado hasta que una instancia del script es adjuntada al GameObject. Usted puede adjuntar un script arrastrando el script asset a un GameObject en el panel de la jerarquía o al inspector del GameObject el cual está actualmente seleccionado. También hay un sub-menú de Scripts en el menú del Componente que va a contener todos los scripts disponibles en el proyecto, incluyendo aquellos que usted ha creado usted mismo. La instancia de script se ve mucho como cualquier otro Componente en el Inspector:
Una vez adjuntado, el script va a comenzar a funcionar cuando usted presione Play y corra el juego. Usted puede revisar esto al agregar el siguiente código en la función Start:-
// Utilice esto para inicializar
void Start () {
Debug.Log("I am alive!");
}
Debug.Log es un simple comando que imprime un mensaje al output de consola de Unity. Si usted presiona Play ahorita, usted debería ver el mensaje en la parte inferior de la ventana principal del editor de Unity y en la ventana de la consola (menu: Window > Console).
2018–03–19 Page amended with limited editorial review
MonoDevelop replaced by Visual Studio from 2018.1