Unity:运行 协程是否在加载新场景时被销毁?

Unity: Are running Coroutines destroyed upon loading new scene?

如果脚本中有一个协程 运行 附加到给定场景中的对象,当该场景结束时,协程会得到 terminated/destroyed 吗? ...即使协程包含例如无休止的 While 循环?


例如,如果我将以下协程附加到场景中的某个对象:

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

...当加载新场景时,假设没有附加到对象的脚本包含“DontDestroyOnLoad(...)”,协程是否仍然在新加载的场景中执行?

提问原因:我需要知道我是否需要保留所有活动协程的列表,以便我可以在每次场景更改后结束它们。我不希望性能随着更多场景的使用而降低。

简答:

是的,它们将在 Coroutines 运行 时终止,具体取决于 MonoBehaviour 它们的启动时间。没有MonoBehaviour ==没有Coroutine.