Unity InputSystem多按键绑定单动作时如何从CallbackContext获取触发按键
Unity Input System 单动作多绑定获取触发按键方法
直接通过InputAction.CallbackContext内置的control属性即可读取触发本次事件的具体输入控件,参考实现代码如下:
using UnityEngine.InputSystem; public void SelectPowerUp(InputAction.CallbackContext context) { // 仅在按键按下完成阶段执行逻辑,避免多次触发 if (!context.performed) return; // 读取触发事件的输入控件 var activeControl = context.control; // 方式1:通过控件名称判断,适配键盘数字键场景 switch (activeControl.name) { case "1": // 触发1号道具选择逻辑 break; case "2": // 触发2号道具选择逻辑 break; case "3": // 触发3号道具选择逻辑 break; } // 方式2:通过控件完整路径判断,适配多设备绑定场景(如同时支持键盘、手柄输入) // if (activeControl.path == "<Keyboard>/digit1") { /* 1号逻辑 */ } // if (activeControl.path == "<Keyboard>/digit2") { /* 2号逻辑 */ } // if (activeControl.path == "<Keyboard>/digit3") { /* 3号逻辑 */ } }
注意事项
- 优先在
context.performed分支下执行业务逻辑,避免输入动作的Started、Canceled阶段重复触发逻辑 - 如果存在多设备输入绑定需求,优先使用路径判断方式,兼容性更强
内容的提问来源于stack exchange,提问作者MJM
相关产品推荐
相关产品推荐

