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?
if (0)
lub if (null)
, inaczej niż w C i C ++.
yield return 0
działa; najwyraźniej z powodu wyjaśnienia MLM
yield
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. Dlatego yield
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 #.
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ą)