我正在尝试检测连接到 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 控制器?
我猜想无论您使用什么驱动程序/软件来使 PS4 控制器在 Windows 上工作,都可以为其指定显示名称。我认为 PS4 控制器没有官方驱动程序/对 Windows 的支持。
您可以像这样检测游戏手柄类型:
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;
有关支持的游戏手柄类型的更多信息,请参见此处。