5 funciones de Unity que debes conocer
En este post vamos a conocer algunas de las funciones de Unity que no podemos olvidar y que nos van a ayudar en nuestros desarrollos.
Funciones de Unity
1 Monobehaviour
La clase Monobehaviour es una de las clases que forman el núcleo principal de las API de Unity. Todos los scripts vinculados a objetos (en el caso de Unity los llamaremos GameObjects) deben derivar de esta clase ya que nos expondrán diversos eventos y funciones que nos serán muy útiles a la hora de desarrollar nuestro proyecto. Posteriormente vamos a ver muchos de estos eventos y funciones en detalle, así que debemos entender que la clase Monobehaviour y el conocimiento de todas las diferentes posibilidades que nos ofrece la misma es crucial para nosotros.
2 Update vs FixedUpdate
Las funciones Update y FixedUpdate nos funciones inherentes de la clase Monobehaviour, así pues desde cualquier GameObject podremos acceder a ellas directamente como:
void Update()
{
}
y
void FixedUpdate()
{
}
Como su nombre indica son funciones que se llaman a determinados intervalos y que normalmente usaremos para actualizar información del objeto. Pero existe una pequeña diferencia entre las dos, que será realmente útil a la hora de decidir cuál usar en cada momento y para qué usarlas.
En el caso de la función Update está se llama de forma automática por el sistema cada frame. Lo que quiere decir que si nuestro juego está funcionando a 30 fps, la función Update se ejecutará 30 veces cada segundo. Pero como la frecuencia de llamada de la función no será siempre la misma ya que ejecución de nuestro juego no será siempre homogénea, dependerá de la carga de objetos, efectos, etc. Por todo esto la función Update se suele usar para la el movimiento de objetos que no dependan de la física, actualizar datos en la UI, entrada de datos y temporizadores simples.
El FixedUpdate en cambio se ejecuta a un intervalo fijo, tal y como su nombre indica, independientemente del framerate al que se esté ejecutando el juego, siendo su uso recomendable para todo aquello que esté relacionado con físicas.
3 Delegates y Events
Tanto los eventos como los delegados son propios del uso del lenguaje C#, y ambos nos ayudarán a mantener un código limpio y ordenado.
Un Delegado es algo similar a un puntero que referencia a una función. Lo que nos permite tratar a la función como una variable y así poder pasarla como un parámetro. Una propiedad interesante y útil de un delegado es que no necesita conocer la clase del objeto al que hace referencia. Podemos ver un ejemplo de definición de un delegado:
using System;
namespace MiEjemplo
{
class Programa
{
public delegate void MiDelegado(string s);
public static void HolaMundo(string s)
{
Console.WriteLine(" Hola, {0}!", s);
}
public static void Main(String[] args)
{
MyDelegate a;
// Crea el delegado referenciando al método HolaMundo
a = new MiDelegado(HolaMundo);
Console.WriteLine("Invoking delegate a:");
a("A");
}
}
}
Un evento en C# sirve para notificar cambios en una clase. Sería como tener subscripciones a una revista, en el momento que sale un número nuevo de la revista los cliente la reciben en sus domicilios. La declaración de eventos se realiza mediante delegados:
using System;
namespace MiEjemplo
{
class Programa
{
static void Main(string[] args)
{
MiEvento e = new MiEvento();
//Se crea el evento y asigna el método al evento,
e.evento += OnEvento;
e.OnEvento("HolaMundo");
}
public static void OnEvento(String s)
{
Console.WriteLine(s);
}
public class MiEvento
{
public event EventHandler evento;
public void OnEvento(String s)
{
evento(s);
}
}
}
}
4 Nomenclatura de variables en Unity
Un detalle curioso que nos ayudará a ver de forma más clara las variables será la nomenclatura que les demos a la hora de crearlas. Unity expone de forma automática las variables públicas de nuestros objetos en el Inspector del Editor. Desde ahí podremos modificar los valores de las mismas. Pero si mantenemos las siguiente estructura en la nomenclatura de las variables “MiVariableEjemplo” Unity nos mostrará la variable en el editor como palabras encadenadas “Mi Variable Ejemplo”, este sistema de serialización que proporciona Unity hace que las variables sean mucho más explícitas y fáciles de leer desde el propio Editor.
5 Orden de ejecución de eventos en Unity
Como hemos visto antes, la clase Monobehaviour tiene varios eventos propios que se lanzan de forma automática, una de las cosas a tener en cuenta sobre estos es el orden de ejecución de los mismos, ya que si no usamos bien dicho orden podemos encontrarnos que algunos eventos interfieran en la ejecución que nosotros deseamos. El orden de ejecución de los eventos de la clase Monobehaviour es el siguiente:
Awake()
OnEnable()
Start()
Update()
LateUpdate()
OnGUI()
OnApplicationQuit()
OnDisable()
OnDestroy()
Como hemos visto hay varias funciones y aspectos de Unity que debemos dominar y debemos tener en cuenta, algunas de ellas nos ayudarán a tener un código ordenado y limpio y otras serán muy necesarias a la hora de conseguir que nuestro programa haga lo que hayamos diseñado. Pero como podemos imaginar Unity abarca mucho más.
¿Crees que puedes sacarle todo el partido a Unity? ¿Crees que Unity es una herramienta potente y fácil de manejar? Déjanos tu comentario
Curso relacionado: Curso Superior de Diseño y Desarrollo de Videojuegos