Unity Toggle点击后仅关闭目标菜单,无法实现正常切换
Unity Toggle功能仅能关闭无法再次切换的问题修复
你的代码逻辑存在明显问题:两个if语句是顺序执行的,导致每次调用Toggle方法时,即使第一个if修改了状态,第二个if会立刻触发,最终只能看到关闭效果。
问题分析
初始状态startToggled = true:
- 第一次调用
Toggle:第一个if条件不满足,第二个if执行,关闭菜单并将startToggled设为false。 - 第二次调用
Toggle:第一个if条件满足,打开菜单并将startToggled设为true,但紧接着第二个if因为startToggled现在为true,再次执行关闭操作,最终菜单还是关闭状态。
修正方案
方案一:使用else if替代第二个if
让两个条件互斥,每次只执行其中一个分支:
public GameObject startToggle; bool startToggled = true; public void Toggle() { if (startToggled == false) { startToggle.SetActive(true); startToggled = true; } else if (startToggled == true) { startToggle.SetActive(false); startToggled = false; } }
方案二:简化逻辑(推荐)
直接对状态取反,再同步菜单的激活状态,代码更简洁且不易出错:
public GameObject startToggle; bool startToggled = true; public void Toggle() { startToggled = !startToggled; startToggle.SetActive(startToggled); }
内容的提问来源于stack exchange,提问作者Random Guy Who Needs Help
相关产品推荐
相关产品推荐

