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

Unity输入系统:双摇杆遥控器被识别为Joystick致单摇杆失效求助

解决Unity中双摇杆遥控器被识别为单Joystick导致的摇杆无响应问题

1. 修正Input System的设备配置文件

Unity Input System的预设配置可能把你的双摇杆遥控器错误归类到单摇杆Joystick模板中:

  • 打开Edit > Project Settings > Input System Package
  • 进入Devices > Device Configurations,搜索Joystick相关配置
  • 复制现有Gamepad配置,修改其Device Match规则,通过设备的Product ID、Vendor ID(可在Window > Analysis > Input Debugger中查看)精准匹配你的遥控器
  • 保存新配置后重启Unity,测试摇杆识别情况

2. 手动绑定输入轴

如果配置文件修改无效,可直接在Input Action中指定对应轴:

  • 打开你的Input Action Asset,编辑目标Action
  • 添加新Binding,在Path选项中选择<Joystick>/axis 2、<Joystick>/axis 3这类非默认摇杆轴(通常对应第二个摇杆)
  • 打开Input Debugger操作第二个摇杆,观察轴数据变化,确认对应轴编号后完成绑定

3. 切换至旧版Input Manager(临时方案)

若项目兼容,可尝试旧版Input Manager,部分设备对其兼容性更好:

  • 打开Edit > Project Settings > Input Manager
  • 在Axes中新增轴,设置Joy Num为Get Motion From All Joysticks,调整Axis编号(如2、3对应第二个摇杆)
  • 测试旧系统下是否能读取第二个摇杆输入

4. 编写自定义设备输入读取逻辑

以上方法无效时,可通过代码直接读取设备原始输入:

using UnityEngine.InputSystem;
using UnityEngine.InputSystem.LowLevel;

void Start()
{
    foreach (var device in InputSystem.devices)
    {
        if (device.name.Contains("你的遥控器名称"))
        {
            device.onEvent += OnRemoteDeviceEvent;
            break;
        }
    }
}

void OnRemoteDeviceEvent(InputDevice device, InputEventPtr eventPtr)
{
    if (eventPtr.IsA<StateEvent>())
    {
        var joystickState = eventPtr.ReadValueAs<Joystick.State>();
        // 根据设备实际布局读取对应摇杆轴,示例为axis2、axis3对应第二个摇杆
        Debug.Log($"摇杆2 X轴值: {joystickState.axis2}, Y轴值: {joystickState.axis3}");
        // 将读取到的值传入游戏逻辑
    }
}

5. 检查设备驱动与系统兼容性

  • 确保遥控器安装了最新厂商驱动,部分设备需要专用驱动才能被Unity正确识别
  • 在Windows控制面板的游戏控制器设置中测试遥控器,确认两个摇杆的轴都能正常输出数据,先修复系统层面的设备识别问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 09:52:41