You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 18:07:32