Jak mógłbym zacząć układać serię wywołań Coroutine, które powinny być wykonywane jeden po drugim?
Próbowałem uzyskać efekt migającego koloru, zapętlający serię kolorowych lerpsów w coroutine, ale to nie działa.
public static IEnumerator Sequence(params IEnumerator[] sequence)
{
for(int i = 0 ; i < sequence.Length; ++i)
{
while(sequence[i].MoveNext())
yield return sequence[i].Current;
}
}
przykład użycia:
IEnumerator PrintCoroutine(string arg)
{
yield return new WaitForSeconds(0.3f);
}
StartCoroutine(Sequence(PrintCoroutine("foo"), PrintCoroutine("bar")));
Poza tym, co opisano heisenbug, coś, że instrukcja Unity nie czyni oczywistym jest, że można obiekt, który otrzymasz od rozmowy.
yield return
Coroutine
StartCoroutine
Czasami powoduje to lepszy odczyt niż pętla MoveNext, ale ma tę wadę, że nie można uniemożliwić uruchomienia dziecięcej coroutine za pomocą logiki w najwyższej pętli coroutine, co może być przydatne do konstruowania bardziej wyrafinowanych technik kontroli przepływu na podstawie IEnumerator.
Aby uzyskać więcej informacji na ten temat, zapoznaj się z tym filmem Unite, który obejmuje lepsze wykorzystanie twoich koronek bez budowania własnego harmonogramu koronek.
źródło