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

如何在暂停菜单中禁用除菜单按钮外的所有输入?

暂停菜单保留菜单按钮输入的解决方案

方法1:拆分Input Action Map(推荐)

Unity的PlayerInput支持多套Action Map,把游戏操作和菜单输入分开管理是最清晰的方式:

  1. 在Input System编辑器中,创建两个Action Map:Gameplay(存放移动、攻击等游戏操作)和UI(存放暂停/继续菜单的按钮)
  2. 用以下代码控制不同Map的启用状态:
public MenuScript menuS;
public PlayerInput input;

private InputActionMap _gameplayMap;
private InputActionMap _uiMap;

private void Awake()
{
    _gameplayMap = input.actions.FindActionMap("Gameplay");
    _uiMap = input.actions.FindActionMap("UI");
}

private void Update()
{
    if (menuS.paused)
    {
        _gameplayMap.Disable();
        _uiMap.Enable(); // 保留菜单输入
    }
    else
    {
        _gameplayMap.Enable();
        _uiMap.Disable(); // 非暂停时禁用UI输入避免误触
    }
}

方法2:单独保留菜单Input Action

如果不想拆分Map,可以单独提取菜单按钮的Action,确保它不受全局禁用影响:

public MenuScript menuS;
public PlayerInput input;
public InputAction pauseAction; // 在Inspector中拖拽绑定菜单按钮的Action

private void Awake()
{
    pauseAction.performed += _ => TogglePause();
}

private void OnEnable()
{
    pauseAction.Enable();
}

private void OnDisable()
{
    pauseAction.Disable();
}

private void Update()
{
    if (menuS.paused)
    {
        input.DeactivateInput();
        pauseAction.Enable(); // 强制启用菜单按钮输入
    }
    else
    {
        input.ActivateInput();
    }
}

private void TogglePause()
{
    menuS.paused = !menuS.paused;
}

方法3:UGUI专属方案

如果你的暂停菜单是UGUI,可以直接依赖Unity EventSystem的UI输入模块:

  • 游戏操作用PlayerInput处理,UI菜单的输入由UI Input Module接管
  • 暂停时只需禁用PlayerInput的Gameplay Action Map,UI输入会自动正常响应,无需额外处理

内容的提问来源于stack exchange,提问作者bob maximus

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 01:11:32