In Unity, abbiamo alcune cose speciali per le coroutine che si aggiungono al normale C #.
per esempio, possiamo usare
yield return WaitForSeconds(5.f);
per far attendere una coroutine 5 secondi prima di continuare.
Cosa fare yield return false;e yield return true;fare?
if (0)o if (null), a differenza di C e C ++.
yield return 0funziona; apparentemente a causa del motivo spiegato da MLM
yieldparola chiave esiste da almeno C # 2.0. Unity non fa altro che chiamarlo coroutine e gestisce l'iteratore generato e i valori restituiti da esso in modo da poter causare ritardi non bloccanti nell'esecuzione del codice.
WaitForSecondsnon è stato dichiarato. Non appena si dichiara un metodo chiamato WaitForSecondsche accetta un argomento float e che restituisce il tipo di elemento dell'enumerazione che si sta implementando, verrà nuovamente compilato. Quindi, yieldnon è speciale per l'Unità. Semmai, il WaitForSecondsmetodo è speciale per Unity, ma anche in questo caso, non estende il linguaggio C #, ma è semplicemente un metodo aggiuntivo che è stato scritto usando C # standard.
yield return truefa qualcosa di speciale. Mayield return nullsemplicemente fa una pausa per un fotogramma, quindi sospetto cheyield return falseabbia esattamente lo stesso effetto (ancheyield return 0perché 0 false null sono tutti uguali sotto il cofano)