Contexto
Los scripts en Unity permiten agregar comportamiento a los GameObjects, ¿qué quiere decir esto? Es lo que utilizamos para definir cómo cada parte de tu videojuego funcionará, es el motor principal del videojuego.
Antes de empezar a programar scripts más complejos en Unity, es importante entender más a fondo cómo funciona su principal lenguaje de programación, C#. Como ya se mencionó antes, Unity permite utilizar otros lenguajes de programación, pero C# es el lenguaje más aceptado por el programa y con mayor compatibilidad.
Explicación
6.1 Convenciones de programación y sintaxis de C#
La sintaxis se refiere a la estructura del lenguaje, es decir, cómo se escriben las oraciones o declaraciones que componen un script en Unity. Un script contiene múltiples partes y es importante entender cada una. En este tema comprenderás las partes principales de un script en Unity, usando C#.
También debes recordar que el lenguaje distingue entre minúsculas y mayúsculas, por lo que hay que asegurarse de escribir todas las líneas de código correctamente.
Haz clic en cada elemento.
El operador “.” se utiliza en medio de dos palabras o líneas de código y se emplea para elegir elementos en un elemento compuesto, es decir, que contiene múltiples propiedades o elementos.
BoxCollider.enabled = true
Enabled es una propiedad que tiene BoxCollider, permite activar o desactivar el colisionador de un GameObject y utiliza esta línea de código para llamarlo, haciendo referencia, primero, al BoxCollider y aplica el punto para decirle al programa que dentro de éste se encuentra la propiedad de enabled.
Es posible anidar más propiedades y ligarlas con el operador punto (.).
transform.position.x
En este caso, transform es compuesto por varias propiedades, como posición, rotación y escala; en este código señalamos que solo queremos utilizar su posición y ésta, a su vez, contiene los elementos de x, y, z, pero señala que únicamente nos interesa utilizar la propiedad de x.
Este concepto es bastante similar al modo en que se escriben las direcciones en Internet o los fólderes de tu computadora. En este caso, podemos imaginar que transformes nuestro fólder principal, que contiene el fólder de position dentro de él y éste, a su vez, contiene el archivo x.
El punto y coma se utiliza para terminar una declaración, por lo que siempre se verá al final.
Debug.Log(transform.position.x);
No todas las partes del código requieren punto y coma al final, todo lo que contenga llaves ({}), no lo requiere.
void Start ()
{
Debug.Log("Start called.");
}
En este caso, la función de Start abre llaves para incluir código en él, por lo cual, al finalizar, no requiere punto y coma. Dentro de él, sin embargo, estamos usando el método Log, que se encuentra dentro de la clase Debug, para escribir en la consola Start Called.
Esta segunda declaración (“Debug.Log();”) sí requiere punto y coma.
Los comentarios, como su nombre lo indica, sirven para dejarte notas, a ti o a otro programador, sobre el código que estás escribiendo, para que sea entendible, fácil de editar y que te permita hacer correcciones. También los puedes utilizar para escribir notas sobre los códigos que te faltan por escribir, para lograr cierta función en tu juego.
Hay dos formas de escribir comentarios. De una línea o de múltiples líneas.
//Este es un comentario de una línea.
El primero, de una línea, se inicia con una doble diagonal hacia el frente (//). Todo lo que se escriba después de estas diagonales y hasta el siguiente cambio de línea, el programa no lo interpretará como código.
/*Este es un comentario Que puede ocupar múltiples Líneas */
El segundo, de múltiples líneas, se inicia con una diagonal y un asterisco (/*) y se termina con los mismos símbolos en el orden opuesto (*/). Todo lo que esté dentro de estos símbolos, no será interpretado como código por el programa.
Es común utilizar este tipo de comentarios para bloquear un bloque de código temporalmente, mientras se hace mantenimiento.
using UnityEngine; using System.Collections; public class BasicSyntax : MonoBehaviour { /* void Start () { Debug.Log(transform.position.x); if(transform.position.y <= 5f) { Debug.Log ("I'm about to hit the ground!"); } } */ }
En este ejemplo, todo el código, dentro de la función Start, se convirtió en un comentario, por lo tanto, no será leído como una línea de código por nuestro script.
6.2 Clases
Al definir una clase, definimos un modelo para cierto tipo de información. Una clase no define ninguna información, pero sí define cómo se utilizará esa información, de qué partes consiste y qué operaciones se pueden realizar con ella. La funciones y variables que contiene cada clase serán miembros de ella.
En Unity se utilizará principalmente una clase, ésta nos servirá como base para saber qué funciones y eventos estarán disponibles para programar.
MonoBehaviour
Es la clase base para todos los scripts de Unity, aparece por default al crear un nuevo script y, por lo general, escribirás todo el código dentro de ella.
Se utilizan para cualquier interacción o control sobre los objetos individuales de un juego.
6.3 Variables
Podemos pensar en las variables como contenedores de información, es necesario un tipo diferente de contenedor para cada tipo de información. Esta es la estructura de una variable:
La primera parte es conocida como la declaración y la segunda como inicialización. Es posible dejar la variable sin inicializar y poner un punto y coma después del nombre de la misma, si se quiere que ésta inicialice como una variable vacía.
Iniciamos nuestra declaración de una variable diciendo el tipo de variable que queremos utilizar. Éstas pueden ser:
Es una variable que contiene un número entero (es decir, sin decimales), éste puede ser positivo o negativo.
Similar a las variables int, pues también están hechas para contener números, pero este tipo de variable puede contener decimales.
El tipo de dato lógico o booleano puede contener valores binarios, es decir, puede tomar dos valores que se excluyen mutuamente, por ejemplo, falso o verdadero. En este caso, se utilizan sus nombres en inglés y puede contener únicamente los valores true o false.
Una variable del tipo string puede contener una serie de caracteres. Se utiliza principalmente, para guardar datos como nombres, codigos, direcciones, etc. El valor de una variable de este tipo debe escribirse dentro de comillas (“valor”).
Seguimos con la declaración de nombre de la variable. Al nombrar la variable, podemos incluir un punto y coma, para declararla como vacía; o podemos incluir un símbolo de igual y un valor de inicialización antes de incluir el punto y coma, para cerrar la declaración.
6.4 Funciones o métodos
Para realizar algo con una variable, utilizamos una función.
En C# las funciones también son conocidas como métodos. En C#, cada instrucción se ejecuta en el contexto de un método.
Las funciones se declaran dentro de una clase y tienen la siguiente estructura: el nivel de acceso, el valor devuelto, el nombre de la función y los parámetros de la misma. Los parámetros de la función se escriben dentro del paréntesis y separados por comas. Los paréntesis vacíos indican que la función no requiere ningún parámetro.
En el siguiente ejemplo, la clase MovimientoJugador contiene dos funciones. La función MovimientoLateral requiere el parámetro de velocidad para ser utilizada, mientras que la función Salto funcionará sin ningún parámetro.
class MovimientoJugador { public void MovimientoLateral(velocidad) { } public void Salto () { } }
Ahora, verás un ejemplo de un script que podemos usar en Unity.
Cierre
Programar en Unity puede parecer una tarea muy compleja, el lenguaje C# puede resultar algo intimidante en un inicio, no te desesperes, es cuestión de práctica y familiaridad con el lenguaje.
Cómo te diste cuenta a lo largo del tema, basta seguir algunas reglas y entender la sintaxis del programa para crear programas muy útiles con poco esfuerzo.
Checkpoint
Asegúrate de:
Referencias