numeratora kompilator generuje dla ciebie jest powtórzyć. Pewnego razu.
Kompilator wygeneruje klasę, która implementuje IEnumerator, który ma funkcję MoveNext() i właściwość Current. Klasa będzie miała wszystkich członków wymaganych do przechowywania stanu funkcji między połączeniami. Dokładne szczegóły można uznać za "Magię kompilatora".
Obiekt tej wygenerowanej klasy będzie obsługiwany i zarządzany przez silnik Unity3d. Silnik Unity3d wywoła funkcję MoveNext() na każdym aktywnym coroutine po każdej klatce (chyba że instrukcja jest inna).
Umożliwiło to programowi Unity3d napisanie skryptów odtwarzanych po jednej klatce na raz. Kombinacja magii kompilatora C# i magii silnika Unity3d zapewnia bardzo wydajne, ale łatwe w użyciu skrypty.
Aby odpowiedzieć na twoje pytanie: kod w twojej funkcji zostanie wykonany jeden raz, ale zostanie zatrzymany na wyciągu zwrotu.
Jak wspomniano powyżej, specjalny obiekt, który implementuje IEnumerator, jest tworzony przez kompilator C#.
Przy pierwszym wywołaniu funkcji MoveNext() funkcja powoduje eksplozję i ustawia bieżący obiekt na "nowy WaitForSeconds (1.5f)".
Silnik Unity3d kontroluje ten obiekt, widzi, że jest to instancja klasy specjalnej "WaitForSeconds", więc umieszcza moduł wyliczający w kolejce oczekujących i nie prosi o drugi element, dopóki nie minie 1,5 sekundy. W międzyczasie zostanie wyświetlonych wiele klatek, a eksplozja zostanie odtworzona.
Po 1,5 s, Unity wyrwie moduł wyliczający z kolejki i ponownie wywoła funkcję MoveNext(). Druga część twojej funkcji zostanie teraz uruchomiona, ale nie uda jej się wygenerować drugiego obiektu. Funkcja MoveNext() zwróci wartość false, aby wskazać, że nie udało się uzyskać nowego elementu, co jest sygnałem Unity3d, aby odrzucić ten moduł wyliczający. Garbage Collector odzyska pamięć w pewnym momencie.
Jak już powiedziano: dzieje się dużo kompilacji i magii Unity3d. Dopóki pamiętasz, że twoja funkcja zostanie wstrzymana do następnej klatki po każdym oświadczeniu o zwrocie plonów, będziesz wiedział wystarczająco dużo, aby skorzystać z tych specjalnych funkcji.
Tytuł pytania może być bardziej opisowy. W jakiś sposób Google jednak wychwyciło słowa kluczowe. – ftvs