如果您在场景中连接了一个脚本并运行了协程,当场景结束时,该协程会被终止/销毁吗?即使该协程包含一个无限循环(如While loop)也是如此?
例如,如果我在场景中连接了以下协程:
IEnumerator SampleCoroutine()
{
while (true) {
yield return new WaitForSeconds(1.0f);
}
yield return null;
}
当一个新场景被加载时,假设对象上没有附加任何"
DontDestroyOnLoad(...)
"的脚本,协程是否仍会在新加载的场景中执行?提问原因:我需要知道是否需要保留所有活动协程的列表,以便在每次场景更改后结束它们。我不希望随着使用更多场景而导致性能下降。
StartCoroutine
的 MonoBehaviour 决定何时停止它。例如,如果 MonoBehaviourA
使用 MonoBehaviourB
的IEnumerator
方法调用StartCoroutine
,则协同程序将只在 MonoBehaviourA
被销毁时停止调用。 - Danny Herbert