我正在使用 Unity 的传统输入(不是新的输入系统),并且我有一个暂停菜单,它大部分工作正常(时间刻度为 0,我可以使用键盘或游戏手柄等进行导航)。
我试图调试的一件事是......如果我在选择“恢复游戏”按钮时按游戏手柄(A)按钮关闭“暂停”菜单,那么也会选择按(A)按钮在游戏取消暂停的瞬间由游戏本身启动,因此可以虚假地启动玩家操作。
我需要阻止游戏世界接收“导致取消暂停”的输入事件,或者是否有某种方法“吃掉”该输入,以便它不会传输到其他游戏对象/组件。或者通过其他方式清楚地检测到游戏刚刚取消暂停。
我尝试取消选中 EventSystem 对象中的“发送导航事件”,但游戏手柄无法导航按钮,我只能单击鼠标。
我想到了某种“游戏仅在最后两帧中未暂停”检查来忽略所有输入。这听起来有点愚蠢/不干净,所以我希望其他人有更好/更干净的解决方案。
if (isPaused)
{
if (Input.GetKeyDown(KeyCode.Escape))
{
UnpauseGame();
}
return;
}
上面是一个相当简单的用例,但希望能帮助您更好地了解我在说什么