在unity 2D中,我加入了這行代碼SceneManager.LoadScene()。但是這行代碼讓我的所有協程都跳轉得非常快,這是爲什麽呢?
时间: 2023-12-10 16:42:12 浏览: 145
这可能是因为 `SceneManager.LoadScene()` 方法会加载一个新的场景并销毁当前场景中的所有物体。当你调用该方法时,协程也会被停止并且被清除。如果你希望在场景加载后继续运行协程,你可以使用 `SceneManager.LoadSceneAsync()` 方法进行异步加载,或者将协程挂在一个不会被销毁的物体上。例如:
```
public class CoroutineManager : MonoBehaviour {
public static CoroutineManager instance;
void Awake() {
if (instance != null) {
Destroy(gameObject);
return;
}
instance = this;
DontDestroyOnLoad(gameObject);
}
public void StartNewCoroutine(IEnumerator coroutine) {
StartCoroutine(coroutine);
}
}
```
在你的场景中,将协程挂在 `CoroutineManager` 上,这样它将不会被销毁,即使你切换到不同的场景中去。然后,你可以使用 `CoroutineManager.instance.StartNewCoroutine()` 方法来启动协程。这样,即使你调用了 `SceneManager.LoadScene()` 方法,协程仍将继续运行。
阅读全文