Update con pausas sin congelar Unity en el intento

La función de ‘Update’ de Unity es uno de los primeros que empezamos a utilizar dentro de Unity ya que permite hacer una acción en cada frame o cada ciclo de juego.

Durante mis clases, eh tenido varios alumnos que preguntan si es posible hacer algo como un ‘Sleep’ en medio de una ejecución de ‘Update’. La respuesta a esta pregunta es un simple no, oh al menos en el Update de Unity. Usando los Coroutine de Unity es posible simular un Update, pero con posibilidad de tener pausas y no congelar Unity en el intento.

En cualquier script que deseamos tener un Update con pausas (yield) podemos lograrlo a partir de este template.


Void Start()

{

StartCoroutine(StartUpdateYield());

}



IEnumerator StartUpdateYield ()

{

    while(true)

         yield UpdateYield();

}



IEnumerator UpdateYield()

{

//Todo tu codigo, y para pausar solo usas cuando necesites

//yield return new //null o WaitForSeconds

}

Con esto es fácil hacer tareas como, avanza 5 pasos, espera 2 segundos, gira 180°, espera 4 segundos, avanza 5 pasos, espera 2 segundos, gira 180° segundos, espera 4 segundos (y se repitiera infinitamente).

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.