Unity按下Esc键却触发按钮onClick事件的问题排查
问题:Unity中Esc键触发UI按钮点击事件的异常
环境信息
- 系统:Win10
- Unity版本:
2022.2.21 <DX11> - 使用Unity新输入系统
实现代码
GamePauseUI.cs(UI恢复按钮逻辑)
public class GamePauseUI : MonoBehaviour { [SerializeField] private Button resumeButton; private void Awake() { resumeButton.onClick.AddListener(() => { Debug.Log("GamePauseUI > UnpauseGame (click)"); GameManager.Instance.UnpauseGame(); }); } }
GameInput.cs(新输入系统绑定)
playerInputActions.Player.Pause.performed += Pause_performed; // 绑定到Escape键 private void Pause_performed(InputAction.CallbackContext obj) { Debug.Log("GameInput > Pause_performed => OnPauseAction"); OnPauseAction?.Invoke(this, EventArgs.Empty); }
GameManager.cs(游戏状态管理)
private void Start() { GameInput.Instance.OnPauseAction += GameInput_OnPauseAction; } // ... private void GameInput_OnPauseAction(object sender, EventArgs e) { // 简化代码用于说明问题 Debug.Log("Kitchen > GameInput_OnPauseAction"); UnpauseGame(); }
正常操作流程
- 按下Esc键暂停游戏 → UI显示
- 按下Esc键恢复游戏 → UI隐藏
(重复操作多次均正常)
异常操作流程
- 按下Esc键暂停游戏 → UI显示
- 点击按钮恢复游戏 → UI隐藏(此步骤正常)
- 按下Esc键暂停游戏 → 除触发按键事件外,还会触发
onClick事件,导致暂停UI仅闪烁一下,游戏直接恢复运行
(该异常会持续存在,直到点击游戏其他区域才恢复正常)
疑问
是否忽略了什么明显设置?为何仅按下一次Esc键就会触发onClick事件?
内容的提问来源于stack exchange,提问作者evilmandarine
相关产品推荐
相关产品推荐

