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

mfuanj7w  于 2023-03-13  发布在  其他
关注(0)|答案(2)|浏览(379)

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

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

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

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

mgdq6dx1

mgdq6dx11#

我猜不管你用什么驱动程序/软件来让PS4控制器在Windows上工作,都会给予它一个显示名称。我不认为PS4控制器有官方的Windows驱动程序/支持。

9wbgstp7

9wbgstp72#

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

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;

有关支持的游戏手柄类型的更多信息可以在here中找到。

相关问题