In Unity haben wir einige spezielle Dinge für Coroutinen, die zusätzlich zu normalem C # existieren.
Zum Beispiel können wir verwenden
yield return WaitForSeconds(5.f);
Warten Sie 5 Sekunden, bevor Sie fortfahren.
Was machen yield return false;und yield return true;tun?
if (0)oder if (null), anders als in C und C ++.
yield return 0funktioniert. anscheinend aus dem Grund MLM erklärt
yieldSchlüsselwort gibt es seit mindestens C # 2.0. Alles, was Unity tut, ist, es als Coroutine zu bezeichnen und den generierten Iterator und die von ihm zurückgegebenen Werte so zu behandeln, dass Sie nicht blockierende Verzögerungen bei der Ausführung Ihres Codes verursachen können.
WaitForSecondses nicht deklariert ist. Sobald Sie eine aufgerufene Methode deklarieren WaitForSeconds, die ein float-Argument akzeptiert und den Elementtyp der von Ihnen implementierten Enumeration zurückgibt, wird sie erneut kompiliert. Daher yieldist die Einheit nichts Besonderes. Wenn überhaupt, ist die WaitForSecondsMethode eine Besonderheit von Unity, aber selbst dann erweitert sie nicht die Sprache C #, sondern ist einfach eine zusätzliche Methode, die mit Standard-C # geschrieben wurde.
yield return truedas was besonderes macht. Aberyield return nullpausiert einfach für einen Frame, also vermute ich, dassyield return falsedas genau den gleichen Effekt hat (auchyield return 0da 0 falsch null sind alle gleich unter der Haube)