W Unity mamy specjalne rzeczy dla coroutines, które są dodatkowe w stosunku do normalnego C #.
na przykład możemy użyć
yield return WaitForSeconds(5.f);
aby coroutine odczekał 5 sekund przed kontynuowaniem.
Co robisz yield return false;
i co yield return true;
robisz?
yield return true
robi coś specjalnego. Aleyield return null
po prostu zatrzymuje się na klatkę, więc podejrzewam, żeyield return false
ma dokładnie taki sam efekt (równieżyield return 0
ponieważ 0 false null są takie same pod maską)if (0)
lubif (null)
, inaczej niż w C i C ++.yield return 0
działa; najwyraźniej z powodu wyjaśnienia MLMyield
kluczowe istnieje od co najmniej C # 2.0. Wszystko, co robi, to nazywa to coroutine i obsługuje wygenerowany iterator oraz wartości zwrócone z niego w sposób, który może powodować nieblokujące opóźnienia w wykonywaniu kodu.WaitForSeconds
nie zostało zadeklarowane. Gdy tylko zadeklarujesz metodę o nazwie,WaitForSeconds
która pobiera argument zmiennoprzecinkowy i zwraca typ elementu wyliczanego elementu, kompiluje się ponownie. Dlategoyield
nie jest wyjątkowy dla Jedności. Jeśli już,WaitForSeconds
metoda ta jest wyjątkowa dla Unity, ale nawet wtedy nie rozszerza języka C #, ale jest po prostu dodatkową metodą napisaną przy użyciu standardowego C #.Odpowiedzi:
WaitForEndOfFrame
I inni podobnego, to tylko puste funkcje tagYieldInstruction
w celu podjęcia decyzji, co zrobić w silniku.Domyślnie wydaje się, że tak jest
WaitForEndOfFrame
. Więc jeśli maszyield return
coś, co nie ma specjalnego znaczenia, takie jak bool, jest to to samo, coWaitForEndOfFrame
.Wydaje się, że nie ma oficjalnej dokumentacji na temat tego zachowania.
Aktualizacja
Rutter skomentował inny specjalny przypadek:
yield return null
Wszystkie Unity Coroutines, w tym
yield return null
uruchamiane przed renderowaniem ramki, z wyjątkiemWaitForEndOfFrame
. Można znaleźć Rutter jest niesamowite odpowiedź na co Jedności odpowiedzi Wyjaśniając to dalej (ładne schematy zestawie).źródło
null
iWaitForEndOfFrame
są takie same, ale w rzeczywistości są nieco inne , jak opisano na stronie podręcznika polecenia wykonania .