You need to enable JavaScript to run this app. Unity新输入系统如何在Attack_performed回调获取鼠标按钮枚举
优惠活动
大模型
产品
解决方案
定价
更多

Unity新输入系统如何在Attack_performed回调获取鼠标按钮枚举

实现方案
  • 先做前置类型校验:判断当前触发动作的控件是否为鼠标按钮控件,避免非鼠标输入(如键盘、手柄按键)触发动作时出现逻辑异常
  • 不建议直接硬解析控件路径字符串做匹配,通过控件实例和当前鼠标设备的内置属性做比对,稳定性远高于字符串匹配,不会因为输入系统版本更新调整路径命名格式就失效

完整代码示例

void Start()
{
    Actions.Player.Attack.performed += Attack_performed;
}

private void Attack_performed(InputAction.CallbackContext obj)
{
    // 前置校验:确认触发来源为鼠标按钮控件
    if (obj.control is not MouseButtonControl matchedMouseBtn)
    {
        return;
    }

    var currentMouse = Mouse.current;
    MouseButton targetButton;

    // 逐一枚举比对控件实例,映射为官方MouseButton枚举
    if (matchedMouseBtn == currentMouse.leftButton)
    {
        targetButton = MouseButton.Left;
    }
    else if (matchedMouseBtn == currentMouse.rightButton)
    {
        targetButton = MouseButton.Right;
    }
    else if (matchedMouseBtn == currentMouse.middleButton)
    {
        targetButton = MouseButton.Middle;
    }
    else
    {
        // 若需支持侧键等其他鼠标按键,可在此扩展匹配逻辑
        return;
    }

    // 后续可直接使用targetButton枚举执行业务逻辑
    print($"本次攻击触发对应的鼠标按钮:{targetButton}");
}

注意事项

  • 该方法完全规避了手动解析路径字符串的兼容问题,和直接打印控件得到的路径字符串相比,实例比对的方式没有格式歧义
  • 若当前Attack动作同时绑定了多类输入设备的按键,前置的类型判断会自动过滤非鼠标的触发来源,不会出现类型转换报错

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.12 16:36:00