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
相关产品推荐
相关产品推荐

