Variables y funciones de scripting en Unity
Una de las partes más complicadas pero a la vez más importantes en el desarrollo del juego es la programación del mismo. Vamos a ver una pequeña introducción al scripting de Unity explicando en qué consisten las variables y las funciones en programación. Intentaremos alejarnos un poco de las explicaciones formales para hacer el tema lo más ameno posible.
Introducción al scripting en Unity
Dos de los grandes pilares de la creación de código son las variables y las funciones. Estos elementos los podemos encontrar en cualquier lenguaje de programación. Podemos entender una clase de C# como un objeto que va a realizar diferentes acciones. Para poder realizar esas acciones vamos a necesitar ciertos elementos (vamos a necesitar tener ciertas cosas) esos elementos que vamos a necesitar son las variables, pero a su vez como hemos comentado nuestro objeto va a necesitar hacer acciones, esas acciones serán las funciones.
Pongamos un ejemplo, supongamos que tenemos una clase Panadero, que se dedica a generar pan. Para poder generar el pan vamos a necesitar ciertos elementos como serán la harina, el agua, la sal y la levadura. Todos estos elementos que vamos a necesitar van a ser variables y van a tener un valor concreto, por ejemplo si lo medimos todo en gramos y mililitros, necesitaríamos 750 de harina, 30 de levadura, 3 de sal y 400 de agua. Es decir, nuestras variables van a tener siempre un valor. Y van a ser variables de un tipo específico, es decir, en este caso lo que tenemos son valores numéricos.
En el caso de que mi clase no fuese la clase panadero, si no, que fuese la clase persona, podríamos tener variables diferentes. Como por ejemplo, nombre, edad, altura, número de cuenta bancaria y una variable para indicar si está vivo o está muerto. En este caso concreto podemos ver que los tipos de variables no tienen porqué ser sólo numéricos. Podemos ver que nombre será un texto, edad será un número entero, la altura si se mide en metros será un número decimal, la cuenta bancaria volverá a ser un texto y la variable que nos indica si está vivo o no, sólo podrá tener dos valores verdadero (si está vivo) o falso (si está muerto), es decir, será un valor boleano.
Si seguimos analizando este ejemplo podemos ver además que dentro de los diferentes tipos de variables que hemos mencionado existe una división más, entre si estos valores son públicos (cualquiera de fuera puede acceder a ellos) o son privados (solo puedo acceder yo mismo a ellos), explicándolo de una manera muy muy sencilla para aquellos que no tienen ningún contacto con la programación, alguno acabará de poner el grito en el cielo.
Pero podemos ver que el nombre, la edad, la altura o si la persona está viva, son valores que claramente alguien de fuera puede conocer sin problemas. Pero la cuenta bancaria es un valor que no queremos que todo el mundo pueda acceder a él, así nuestra clase podría ser algo parecido a lo siguiente:
using UnityEngine;
using System.Collections;
public class Persona : MonoBehaviour {
public string nombre;
public int edad;
public float altura;
public bool vivo;
private string cuenta;
}
Pero volviendo al ejemplo anterior de nuestra clase Panadero;
using UnityEngine;
using System.Collections;
public class Persona : MonoBehaviour {
public int harina = 750;
public int levadura = 30;
public int sal = 3;
public int agua = 400;
}
Podemos observar cómo definimos una variable, es decir, le indicamos al código que tipo de variable va a ser, que nombre va a tener y si va a tener algún valor inicial. Pero al principio hemos mencionado que nuestra clase panadero es un objeto que va a realizar acciones, en este caso las acciones necesarias para hacer pan, como podrían ser juntar los ingredientes, amasar la masa, fermentar la masa y hornear el pan. Estas acciones de igual forma que pasaba con el ejemplo de las variables también van a poder ser públicas o privadas.
Si acabamos de definir la estructura que hemos mencionado tendríamos:
using UnityEngine;
using System.Collections;
public class Persona : MonoBehaviour {
public int harina = 750;
public int levadura = 30;
public int sal = 3;
public int agua = 400;
public void JuntarIngredientes() {
}
public void AmasarMasa() {
}
private void FermentarMasa(){
}
public void HornearPan(){
}
}
En este ejemplo podemos ver que hay funciones públicas pero también hay una función privada, en este caso la función de fermentado, ya que no es una acción que se vaya a ejecutar desde fuera, si no que va a ser una función que se va a realizar de forma interna sin intervención externa.
En posteriores entregas explicaremos mucho más acerca de las funciones, sus parámetros de entrada, sus parámetros de salida, las funciones que incorpora el MonoBehaviour, etc. Pero como hemos dicho al principio, hemos intentado hacer un pequeño acercamiento al scripting en Unity.
¿Tienes más ganas de saber más sobre el scripting en Unity? Déjanos tu comentario.
Curso relacionado: Curso Superior de Diseño y Desarrollo de Videojuegos con Unity 3D