Unity如何通过按键控制布尔值开关 按E键切换拍照模式问题
问题根源
- 错误使用
Input.GetKey("e"):该API会在按住E键的每帧持续触发,只要按键未松开就会反复执行状态切换逻辑,导致状态不停跳动 - 代码末尾存在无判断条件的冗余逻辑:无论前面的判断结果如何,最后都会强制把
isphoto赋值为true,直接打乱了切换逻辑 - 新增的
MaxtimetoSwitch配合while循环的写法完全无效:循环只会执行1次,没有任何实际作用,属于冗余代码
正确实现
要实现按一次切换一次状态,只需要检测按键按下的单帧事件,直接对布尔值取反即可,代码简化如下:
if (Input.GetKeyDown(KeyCode.E)) { isphoto = !isphoto; Debug.Log("拍照模式状态:" + (isphoto ? "开启" : "关闭")); }
说明:
Input.GetKeyDown只会在按键按下的那一帧触发一次,后续按住也不会重复执行,完美匹配单次按键切换一次状态的需求。
内容的提问来源于stack exchange,提问作者kevshoot
相关产品推荐
相关产品推荐

