【发布时间】:2016-05-17 12:53:21
【问题描述】:
好的,我有这个协程:
IEnumerator ShowCharTraits()
{
while(!hasPlayerChosen)
{
yield return null;
traitPanel.SetActive(true);
}
hasPlayerChosen = false;
traitPanel.SetActive(false);
// Debug.Log("Got called! job done");
}
我的GameManager 中的 awake 方法是这样调用它的:
players = GameObject.FindGameObjectsWithTag("Player");
foreach (GameObject g in players)
{
ui_Controller.StartShowCharTraits();
g.GetComponent<PlayerToken>().isTurn = false;
}
StartShowCharTraits() 是一个简单的方法:
public void StartShowCharTraits()
{
StartCoroutine("ShowCharTraits");
}
现在,我检查了标签,没有空引用异常,实际上没有抛出错误或警告。如果我在编辑器中加载场景然后播放它一切正常。 traitPanel.SetActive(true); 被调用,我的面板出现了。但是,当我使用SceneManager.LoadScene(1); 从另一个场景加载我的场景时,永远无法到达上述行。任何想法为什么会发生这种情况?
【问题讨论】:
-
你能分辨出哪一行没有被调用吗?你能至少做一个 debug.log 来检查协程是否工作
-
我确实知道没有调用哪个特定行。我已经回答了我自己的问题。问题是让我们换个地方说。
-
我已经为您提供了一个令人兴奋的答案@uripopov!