如何正确检测连接的游戏手柄类型?

问题描述 投票:0回答:2

我正在尝试检测连接到 Unity 的控制器类型。这是我所做的:

var gamepad = Gamepad.current;
        var keyboard = Keyboard.current;
        if (gamepad == null && keyboard == null)
            return; // No gamepad connected.
        if (gamepad != null )
        {
            print(gamepad.displayName);
        }

我的 PC 上连接了 ps4 有线控制器,但是当我运行游戏时,这是我得到的:

这怎么会发生?当连接的是 PS4 控制器时,为什么不打印 Xbox 控制器?

unity3d
2个回答
0
投票

我猜想无论您使用什么驱动程序/软件来使 PS4 控制器在 Windows 上工作,都可以为其指定显示名称。我认为 PS4 控制器没有官方驱动程序/对 Windows 的支持。


0
投票

您可以像这样检测游戏手柄类型:

    var gamepad = Gamepad.current;
    if (gamepad == null)
        return;
    if (gamepad is DualShockGamePad)
    {
        print("Playstation gamepad");
    }
    else if (gamepad is XInputController) 
    {
        printl("Xbox gamepad")
    }

您可以从以下位置获得这些课程:

using UnityEngine.InputSystem.DualShock;
using UnityEngine.InputSystem.XInput;

有关支持的游戏手柄类型的更多信息,请参见此处

© www.soinside.com 2019 - 2024. All rights reserved.