44. CLASE MONOBEHAVIOUR (IV)



El resto de funciones que nos quedan por estudiar de la clase MonoBehaviour (que son unas cuantas) son comúnmente conocidas como "funciones sobreescribibles". El nombre les viene dado porque estas funciones tienen, con respecto a las "standard", la peculiaridad de que nos permiten diseñar nosotros su contenido. Por explicarlo de alguna manera, la firma de estas funciones, que es lo que nos brinda Unity, supondrían el cuándo y lo que nosotros escribiremos será el qué y el cómo.

Incidentalmente, y para entender un poco mas la pléyade de funciones que vienen a continuación, vamos a explicar el orden en que Unity inicializa los distintos elementos que lo componen cada vez que se carga una escena en el juego:

-Primero se cargan los objects (game objects y components).
-Acto seguido se cargan los scripts que van vinculados a estos objects, y
una serie de funciones (las que veremos a continuación) son llamadas en un
orden específico:

1.- Awake.
2.- Start.
3.-Update/FixedUpdate.
4.-LateUpdate.



Update:

function Update () : void


Esta función, con la que ya hemos lidiado en alguna ocasión, es llamada cada frame, si el Monobehaviour (script que la invoca) está activo.

Es la función más usada en los scripts, si bien arrastra el inconveniente de que cada ordenador puede tener un framerate distinto, por lo que la misma instrucción de movimiento, por ejemplo, daría pie a diferentes velocidades dependiendo del framerate de cada uno (con resultados catastróficos, sin ir más lejos, en juegos online para varios jugadores). Para transformar las unidades de actualización de la función de frames a segundos se utiliza Time.deltaTime.


LateUpdate:

function LateUpdate () : void


LateUpdate es llamado una vez todas las funciones Update han sido llamadas. Esto nos permite ordenar la ejecución de scripts. Por ejemplo, una cámara que sigue a un objeto debería implementarse en un lateUpdate, pues cabe que el objeto al que sigue se inicialice con un determinado movimiento en update, movimiento que debería tener en cuenta la cámara.


FixedUpdate:

function FixedUpdate () : void


Esta función se ejecuta cada cierto número preestablecido y fijo de frames, lo que hace que no presente los problemas de update. Se debe utilizar en aquellos scripts que impliquen un componente de físicas, y sobre todo, siempre se ha de utilizar cuando haya que añadir una fuerza a un Rigidbody.


Awake:

function Awake () : void


Awake es llamada cuando se inicia el script, osea, cuando se carga la escena, y justo después de que se carguen los objects (gameobjects y components) a que el script hace referencia. De tal manera, es útil para inicializar variables o estados del juego antes de que el juego empiece, referenciando si es preciso a los objects a que hacen mención (y que ya habrán sido como decimos inicializados previamente). Por ejemplo, dentro de un awake puedes tranquilamente usar Gameobject.FindWithTag.

Cada función awake para gameobjects es llamada de forma aleatoria, razón por la cual se utiliza Awake para colocar referencias entre scripts (pej, el script X llamará al script Y) pero se ha de utiliza Start para pasar información de un lado a otro (pej: El script x le pasa el valor 5 al script Y), ya que Awake es llamada siempre antes que Start y así al mandar valores vía Start nos aseguramos de que las relaciones entre scripts estén ya establecidas vía Awake.

Por último, indicar que Awake no puede formar parte de una corrutina, y que será llamada aunque en el inspector la instancia del script esté deshabilitada/desmarcada.


Start:

function Start () : void


Es llamada después de Awake y antes de Update. Al igual que awake, sólo es llamada una vez a lo largo de toda la vida del script.

Aparte del momento en que son llamadas, Start se diferencia de Awake en que Start sólo es llamada si la instancia del script está habilitada, esto es, tiene su checkbox marcado en el inspector. Así, cuando un gameobject es inicialmente usado en una escena esta función es llamada automáticamente.


Reset:

function Reset () : void


Resetea a los valores por defecto, restaurando los valores originales. Esta función es llamada cuando se pulsa reset en el inspector o cuando se añade un componente por primera vez.

POSTED BY UnityScripts
DISCUSSION 1 Comment

One Response to : 44. CLASE MONOBEHAVIOUR (IV)

  1. JJBreaker says:

    Muchas gracias! me sirvió ;)

Leave a Reply

Con la tecnología de Blogger.