¿Cómo haría para apilar una serie de llamadas de rutina que deberían ejecutarse una tras otra?
He intentado obtener un efecto de color parpadeante que repite una serie de lerps de color en una rutina pero no funciona.
public static IEnumerator Sequence(params IEnumerator[] sequence)
{
for(int i = 0 ; i < sequence.Length; ++i)
{
while(sequence[i].MoveNext())
yield return sequence[i].Current;
}
}
ejemplo de uso:
IEnumerator PrintCoroutine(string arg)
{
yield return new WaitForSeconds(0.3f);
}
StartCoroutine(Sequence(PrintCoroutine("foo"), PrintCoroutine("bar")));
Además de lo que describió Heisenbug, algo que el manual de Unity no hace obvio es que puedes hacer
yield return
unCoroutine
objeto que recibes de unaStartCoroutine
llamada.Esto a veces hace una mejor lectura que un bucle MoveNext, pero tiene la desventaja de que no puede evitar que la rutina infantil se ejecute a través de la lógica dentro del bucle corutina superior, lo que podría ser útil para construir técnicas de control de flujo más sofisticadas sobre IEnumerator.
Para obtener más información sobre esto, debe mirar este video de Unite que cubre cómo sacar más provecho de sus rutinas sin crear su propio programador de rutinas.
fuente