2016-05-23 7 views
4

特定のシーンのオブジェクトに接続されたスクリプトでコルーチンが実行されている場合、そのシーンが終了すると、コルーチンが終了/破棄されますか?たとえコルーチンが含まれていても。無限のWhileループ?例えばユニティ:新しいシーンの読み込み時にコルーチンが破壊されていますか?


私は私のシーン内のオブジェクトに添付次のコルーチンがある場合、:

IEnumerator SampleCoroutine() 
{ 
    while (true) { 
     yield return new WaitForSeconds(1.0f); 
    } 
    yield return null; 
} 

を新しいシーンがロードされたとき...、オブジェクトに添付一切スクリプトを想定していないこと」が含まれていDontDestroyOnLoad(...) "は、新しくロードされたシーンでコルーチンがまだ実行されますか?

理由:すべてのアクティブなコルーチンのリストを保持する必要があるかどうかを知る必要があるため、すべてのシーンが変更された後に終了することができます。私は、より多くのシーンが使用されるにつれてパフォーマンスが低下することを望んでいません。

答えて

5

短い答えは:MonoBehaviourに応じてCoroutineの実行は彼らが開始されたとして

はい、彼らは終了します。いいえMonoBehaviour ==いいえCoroutine

+0

明確にするために、呼び出されたオブジェクトが破棄されると、それらは終了しますか? –

+2

@BenHaywardこれは、StartCoroutineを呼び出すMonoBehaviourで、いつ停止するかを決定します。例えば。 MonoBehaviour 'A'がMonoBehaviour' B'の 'IEnumerator'メソッドを使用して' StartCoroutine'を呼び出した場合、MonoBehviour ** 'A' **が破壊されたときにのみコルーチンが呼び出されます。 –

+1

@BenHaywardとまったく同じようにgjttt1が言っています。私はasnwerが 'no'で始まったが、 'yes'で答える必要があったため、答えを編集した。 –