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 0
funktioniert. anscheinend aus dem Grund MLM erklärt
yield
Schlü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.
WaitForSeconds
es 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 yield
ist die Einheit nichts Besonderes. Wenn überhaupt, ist die WaitForSeconds
Methode 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 true
das was besonderes macht. Aberyield return null
pausiert einfach für einen Frame, also vermute ich, dassyield return false
das genau den gleichen Effekt hat (auchyield return 0
da 0 falsch null sind alle gleich unter der Haube)