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 0
funziona; apparentemente a causa del motivo spiegato da MLM
yield
parola 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.
WaitForSeconds
non è stato dichiarato. Non appena si dichiara un metodo chiamato WaitForSeconds
che accetta un argomento float e che restituisce il tipo di elemento dell'enumerazione che si sta implementando, verrà nuovamente compilato. Quindi, yield
non è speciale per l'Unità. Semmai, il WaitForSeconds
metodo è 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 true
fa qualcosa di speciale. Mayield return null
semplicemente fa una pausa per un fotogramma, quindi sospetto cheyield return false
abbia esattamente lo stesso effetto (ancheyield return 0
perché 0 false null sono tutti uguali sotto il cofano)