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

Unity3D Input System多按键同时触发:如何实现组合键动作?

Unity新Input System实现多按键组合触发动作的方法

方法一:用组合绑定(Composite Bindings)可视化配置

这是最直接的无代码方案,完全在Input System编辑器里完成:

  • 打开你的.inputactions资产文件,选中需要设置的Action
  • 在Binding面板点击Add Binding,选择Add Composite,根据需求选对应的组合类型(比如要一个修饰键+主按键,选Button With One Modifier)
  • 分别配置Modifier和Main Button:把Modifier设为<Keyboard>/leftCtrl(或rightCtrl),Main Button设为<Mouse>/leftButton
  • 保存配置后,当同时按住Ctrl和鼠标左键时,该Action就会触发对应的回调事件

方法二:代码实时判断按键状态

适合需要灵活逻辑的场景,直接在脚本里检查两个按键的按下状态:

方式1:通过已定义的Input Action判断

using UnityEngine;
using UnityEngine.InputSystem;

public class ComboActionHandler : MonoBehaviour
{
    [SerializeField] private PlayerInput playerInput;
    private InputAction _leftMouseAction;
    private InputAction _ctrlAction;

    void Awake()
    {
        // 替换成你自己定义的动作名称
        _leftMouseAction = playerInput.actions["LeftMouseClick"];
        _ctrlAction = playerInput.actions["LeftCtrl"];
    }

    void Update()
    {
        if (_leftMouseAction.IsPressed() && _ctrlAction.IsPressed())
        {
            // 这里写你要执行的动作逻辑
            Debug.Log("Ctrl+鼠标左键触发成功");
        }
    }
}

方式2:直接调用InputSystem静态API判断

不需要提前定义Input Action,直接检查系统按键状态:

using UnityEngine;
using UnityEngine.InputSystem;

public class ComboActionHandler : MonoBehaviour
{
    void Update()
    {
        if (Mouse.current.leftButton.isPressed && Keyboard.current.leftCtrlKey.isPressed)
        {
            // 执行目标动作
        }
    }
}

注意事项

  • 组合绑定适合简单的固定按键组合,无需额外代码维护
  • 代码判断可以处理更复杂的逻辑,比如按键按下的先后顺序、长按时长等
  • 确保PlayerInput组件的Action Map已正确关联到你的Input Actions资产

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 13:48:11