我变得奇怪behvaiour我不知道为什么?我在添加监听器上添加按钮点击事件的功能,但是当我重新加载我的场景时它仍然缺失。我有这个功能。 (我已经测试了正确的按钮对象)
public void SetupMenuSceneButtons()
{
if (GameObject.Find("BtnStartHost"))
Debug.Log("BtnStartHost found");
if (GameObject.Find("BtnJoinGame"))
Debug.Log("BtnJoinGame found");
GameObject.Find("BtnStartHost").GetComponent<Button>().onClick.RemoveAllListeners();
GameObject.Find("BtnStartHost").GetComponent<Button>().onClick.AddListener(delegate { StartupHost(); });
GameObject.Find("BtnJoinGame").GetComponent<Button>().onClick.RemoveAllListeners();
GameObject.Find("BtnJoinGame").GetComponent<Button>().onClick.AddListener(delegate { JoinGame(); });
}
我在 OnLevelWasLoaded 事件上调用上面的函数,但是在点击时它的功能分配仍然缺失,我的按钮无法正常工作,因为我重新加载了我的场景。我也尝试过没有委托的Add事件监听器,但同样的问题。
GameObject.Find("BtnJoinGame").GetComponent<Button>().onClick.AddListener(JoinGame);
我也试过通过这个但仍然存在问题。
GameObject.Find("BtnStartHost").GetComponent<Button>().onClick.RemoveAllListeners();
GameObject.Find("BtnStartHost").GetComponent<Button>().onClick.AddListener(()=> { StartupHost(); });
GameObject.Find("BtnJoinGame").GetComponent<Button>().onClick.RemoveAllListeners();
GameObject.Find("BtnJoinGame").GetComponent<Button>().onClick.AddListener(() => { JoinGame(); });
答案 0 :(得分:1)
我在v5.5上对你的代码进行了测试,OnLevelWasLoaded只是没有被调用并触发了一个被弃用的警告(有趣的是它仍然在VS中自动完成)。
以下是有效的:
void OnEnable()
{
SceneManager.sceneLoaded += SceneManager_sceneLoaded; ;
}
private void SceneManager_sceneLoaded(Scene arg0, LoadSceneMode arg1)
{
SetupMenuSceneButtons();
}