Noticias

¡RECUERDA QUE SI ERES UN NUEVO USUARIO, DEBES PRESENTARTE PARA PODER PUBLICAR MENSAJES! | TENEMOS CANAL OFICIAL DE TELEGRAM: t.me/unity3dspain

Temas recientes

Corrutina En Bucle

Iniciado por Danwolve, Abril 17, 2019, 07:15:02 PM

Tema anterior - Siguiente tema
Hola buenas,
 
actualmente estoy trabajando con un script que maneja a la IA enemiga, mi duda es muy simple, cuando poneis una corrutina en el metodo Update y necesitais que se reproduzca una sola vez y que luego hasta que no se cumpla la condicion otra vez no vuelva a reproducirse como lo haceis?. Gracias.

¿Por que quieres meterla en Update? ¿Puedes pasar el script?

La co-rutina puede tener la llamada en Update pero debe estar controlada por alguna condición para que no se esté ejecutando en cada frame.

La condición puede ser que no se vuelva a activar mientras la co-rutina este activa (depende claramente de lo que estés haciendo en la co-rutina, pero por ejemplo, si sabes que la co-rutina va a durar 2 segundos¿? pues puedes poner que no se vuelva a activar hasta que el tiempo sea Time.time+ 2.0f
 
 

En C# yo lo haría así: 
 

bool condicionCumplida = false;
void Update{
if(condicionCumplida)
{
   condicionCumplida = false;
   StartCoroutine(MiCorrutina());
}
}
IEnumerator MiCorrutina()
{
//Tu código
yield return 0;
}

 


En este código, hasta que no se cumpla la condición no volverá a reproducirse la corrutina. Si quieres que cuando empiece una nueva se pare la anterior tendrás que añadir un par de líneas más...

Vale, ya lo solucione poniendo una condicion de tipo boolean, gracias a todos :D

Etiquetas: