Bagaimana cara saya menumpuk serangkaian panggilan Coroutine yang harus dieksekusi satu demi satu?
Saya telah mencoba mendapatkan efek warna berkedip-kedip serangkaian rangkaian lerps warna dalam coroutine tetapi tidak berfungsi.
public static IEnumerator Sequence(params IEnumerator[] sequence)
{
for(int i = 0 ; i < sequence.Length; ++i)
{
while(sequence[i].MoveNext())
yield return sequence[i].Current;
}
}
contoh penggunaan:
IEnumerator PrintCoroutine(string arg)
{
yield return new WaitForSeconds(0.3f);
}
StartCoroutine(Sequence(PrintCoroutine("foo"), PrintCoroutine("bar")));
Selain apa yang dijelaskan Heisenbug, sesuatu yang manual Unity tidak membuat jelas adalah bahwa Anda dapat
yield return
suatuCoroutine
objek, yang Anda terima dari sebuahStartCoroutine
panggilan.Ini kadang-kadang membuat pembacaan yang lebih baik daripada loop MoveNext, tetapi memiliki kelemahan bahwa Anda tidak dapat mencegah coroutine anak berjalan melalui logika dalam loop coroutine teratas, yang dapat berguna untuk membangun teknik kontrol aliran yang lebih canggih di atas IEnumerator.
Untuk lebih lanjut tentang ini, Anda harus melihat video Unite ini yang mencakup mendapatkan lebih banyak dari coroutine Anda tanpa membangun penjadwal coroutine Anda sendiri.
sumber