l'enumeratore il compilatore genera per voi viene iterato. Una volta.
Il compilatore genererà una classe che implementa IEnumerator, che ha una funzione MoveNext() e una proprietà Current. La classe avrà tutti i membri necessari per memorizzare lo stato della funzione tra le chiamate. I dettagli esatti possono essere considerati "Compiler Magic".
L'oggetto di questa classe generata verrà gestito e gestito da Unity3d Engine. Il motore Unity3d chiamerà MoveNext() su ciascuna coroutine attiva una volta ogni frame (salvo istruzioni contrarie).
Ciò ha permesso al programmatore Unity3d di scrivere script che vengono riprodotti un fotogramma alla volta. Una combinazione di magia del compilatore C# e magia del motore Unity3d si traduce in uno scripting molto potente, ma facile da usare.
Per rispondere alla tua domanda: il codice nella tua funzione verrà eseguito una volta, ma si fermerà alla dichiarazione "rendimento".
Come detto sopra, un oggetto speciale che implementa IEnumerator viene creato dal compilatore C#.
Alla prima chiamata a MoveNext(), la funzione crea un'esplosione e imposta l'oggetto corrente su "new WaitForSeconds (1.5f)".
Il motore Unity3d ispeziona questo oggetto, vede che è un'istanza della classe speciale "WaitForSeconds", quindi mette l'enumeratore su una coda in attesa e non chiederà il secondo elemento fino a che non sia passato 1,5 secondi. Nel frattempo, molti fotogrammi saranno renderizzati e l'esplosione verrà riprodotta.
Dopo 1,5 sec, Unity eseguirà l'estrazione di enumeratore dalla coda e richiamerà nuovamente MoveNext(). La seconda parte della tua funzione verrà eseguita ora, ma non riuscirà a generare un secondo oggetto. MoveNext() restituirà false per indicare che non è riuscito a ottenere un nuovo elemento, che è il segnale di Unity3d per eliminare questo enumeratore. Il Garbage Collector recupererà la memoria ad un certo punto nel tempo.
Come detto: un sacco di compilatore e magia Unity3d sta succedendo. Finché ti ricordi che la tua funzione sarà messa in attesa fino al prossimo frame ad ogni dichiarazione di rendimento, saprai abbastanza per trarre beneficio da quelle funzioni speciali.
Il titolo della domanda potrebbe essere più descrittivo. In qualche modo, Google ha ancora raccolto le parole chiave, comunque. – ftvs