【发布时间】:2016-03-12 08:56:57
【问题描述】:
我有一个单例 LevelManager 加载关卡,等待新加载的关卡中的脚本将 GameObject 分配给 LevelManager,然后对其进行处理。
我有以下代码:
// some GameObject calls the loadLevel coroutine
void somefunction(sceneToLoad){
StartCoroutine(LevelManager.Instance.loadLevel (sceneToLoad));
}
// snippet of LevelManager.cs
public GameObject levelPrepper = null;
public IEnumerator loadLevel(string levelName){
Application.LoadLevel (levelName);
while (!levelPrepper)
yield return null;
yield return StartCoroutine (waitForLevelPrepper());
print("yay");
//do stuff
}
//snippet of the levelPrep.cs:
void Awake(){
LevelManager.Instance.levelPrepper = gameobject;
}
问题是“耶”永远不会被打印出来。
我做了一些阅读,发现当承载协程的游戏对象被销毁时,可能会发生这种情况。但是,LevelManager在这个过程中绝对不会被破坏,所以我很茫然。
【问题讨论】:
标签: c# unity3d while-loop singleton coroutine