Como eu empilharia uma série de chamadas da Coroutine que deveriam ser executadas uma após a outra?
Tentei obter um efeito de cor intermitente, repetindo uma série de leituras de cores em uma rotina, mas não está funcionando.
public static IEnumerator Sequence(params IEnumerator[] sequence)
{
for(int i = 0 ; i < sequence.Length; ++i)
{
while(sequence[i].MoveNext())
yield return sequence[i].Current;
}
}
exemplo de uso:
IEnumerator PrintCoroutine(string arg)
{
yield return new WaitForSeconds(0.3f);
}
StartCoroutine(Sequence(PrintCoroutine("foo"), PrintCoroutine("bar")));
Além do que Heisenbug descreveu, algo que o manual do Unity não torna óbvio é que você pode
yield return
umCoroutine
objeto que você recebe de umaStartCoroutine
chamada.Às vezes, isso resulta em uma leitura melhor do que um loop MoveNext, mas tem a desvantagem de que você não pode impedir a execução da lógica de uma criança na lógica dentro do loop mais alto, o que pode ser útil para a construção de técnicas de controle de fluxo mais sofisticadas sobre o IEnumerator.
Para saber mais, consulte este vídeo do Unite, que cobre o aproveitamento máximo de suas corotinas sem criar seu próprio agendador de cores.
fonte