Le recenseur le compilateur génère pour vous est réitérée. Une fois que.
Le compilateur génère une classe qui implémente IEnumerator, qui possède une fonction MoveNext() et une propriété Current. La classe aura tous les membres requis pour stocker l'état de la fonction entre les appels. Les détails exacts peuvent être considérés comme "Magie du compilateur".
L'objet de cette classe générée sera géré et géré par le moteur Unity3d. Le moteur Unity3d appellera MoveNext() sur chaque coroutine active une fois par trame (sauf indication contraire).
Cela a permis au programmeur Unity3d d'écrire des scripts qui sont lus une image à la fois. Une combinaison de la magie du compilateur C# et de la magie du moteur Unity3d aboutit à des scripts très puissants mais faciles à utiliser.
Pour répondre à votre question: le code de votre fonction sera exécuté une fois, mais il sera mis en pause à l'instruction 'return return'.
Comme indiqué ci-dessus, un objet spécial qui implémente IEnumerator est créé par le compilateur C#. Lors du premier appel à MoveNext(), votre fonction crée une explosion et définit l'objet en cours sur "new WaitForSeconds (1.5f)". Le moteur Unity3d inspecte cet objet, voit qu'il s'agit d'une instance de la classe spéciale "WaitForSeconds", met donc l'énumérateur sur une file d'attente et ne demandera pas le second élément avant que 1,5 sec soit passé. En attendant, beaucoup de cadres seront rendus et l'explosion sera jouée. Au bout de 1,5 seconde, Unity récupère l'énumérateur dans la file d'attente et appelle à nouveau MoveNext(). La deuxième partie de votre fonction s'exécutera maintenant, mais ne pourra pas générer un second objet. MoveNext() retournera false pour indiquer qu'il n'a pas réussi à obtenir un nouvel élément, ce qui est le signal à Unity3d pour l'éloigner de cet énumérateur. Le Garbage Collector récupérera la mémoire à un moment donné.Comme dit: beaucoup de compilateur et de magie Unity3d est en cours. Tant que vous vous souvenez que votre fonction sera mise en attente jusqu'à la prochaine image à chaque relevé de rendement, vous en saurez assez pour bénéficier de ces fonctions spéciales.
Le titre de la question pourrait être plus descriptif. D'une certaine manière, Google a encore ramassé les mots-clés, cependant. – ftvs