输入设备标识
Input Device Identification
有什么方法可以识别连接到PC的输入设备吗? (例如游戏手柄、街机摇杆等)?在 Xbox One SDK 中,Windows::Xbox::Input::IController 中的每个设备都有自己的 ID,但 Windows::Gaming::Input::IGameController 中没有任何 ID 字段。
如何识别连接的设备?如何确定哪个控制器被删除,哪个控制器仍然有效?
在UWP中,我们可以在你的问题的Windows.Gaming.Input Namespace to detect and track gaming input devices. As you've added gamepad标签下使用类,我会以游戏手柄为例。
要检测和跟踪游戏手柄,我们可以使用 Gamepad Class. The Gamepad class provides a static property, Gamepads,这是一个 read-only 当前连接的游戏手柄列表。请不要建议您维护自己的 collection 而不是通过 Gamepads
属性.
访问它们
一旦我们有了 collection,我们就可以使用 GamepadAdded and GamepadRemoved 事件来跟踪游戏手柄。正如他们的名字,这两个方法在添加或移除游戏手柄时被引发。以下是一个简单的示例:
auto myGamepads = ref new Vector<Gamepad^>();
for (auto gamepad : Gamepad::Gamepads)
{
myGamepads->Append(gamepad);
}
Gamepad::GamepadAdded += ref new EventHandler<Gamepad^>(Platform::Object^, Gamepad^ args)
{
myGamepads->Append(args);
}
Gamepad::GamepadRemoved += ref new EventHandler<Gamepad^>(Platform::Object^, Gamepad^ args)
{
unsigned int indexRemoved;
if(myGamepads->IndexOf(args, &indexRemoved))
{
myGamepads->RemoveAt(indexRemoved);
}
}
如果你想确定哪个控制器被删除了,我想你可以利用索引。更多信息,请参阅Detect and track gamepads。
其他游戏输入设备,类似于手柄,可以参考Input for games下的文档。
有什么方法可以识别连接到PC的输入设备吗? (例如游戏手柄、街机摇杆等)?在 Xbox One SDK 中,Windows::Xbox::Input::IController 中的每个设备都有自己的 ID,但 Windows::Gaming::Input::IGameController 中没有任何 ID 字段。 如何识别连接的设备?如何确定哪个控制器被删除,哪个控制器仍然有效?
在UWP中,我们可以在你的问题的Windows.Gaming.Input Namespace to detect and track gaming input devices. As you've added gamepad标签下使用类,我会以游戏手柄为例。
要检测和跟踪游戏手柄,我们可以使用 Gamepad Class. The Gamepad class provides a static property, Gamepads,这是一个 read-only 当前连接的游戏手柄列表。请不要建议您维护自己的 collection 而不是通过 Gamepads
属性.
一旦我们有了 collection,我们就可以使用 GamepadAdded and GamepadRemoved 事件来跟踪游戏手柄。正如他们的名字,这两个方法在添加或移除游戏手柄时被引发。以下是一个简单的示例:
auto myGamepads = ref new Vector<Gamepad^>();
for (auto gamepad : Gamepad::Gamepads)
{
myGamepads->Append(gamepad);
}
Gamepad::GamepadAdded += ref new EventHandler<Gamepad^>(Platform::Object^, Gamepad^ args)
{
myGamepads->Append(args);
}
Gamepad::GamepadRemoved += ref new EventHandler<Gamepad^>(Platform::Object^, Gamepad^ args)
{
unsigned int indexRemoved;
if(myGamepads->IndexOf(args, &indexRemoved))
{
myGamepads->RemoveAt(indexRemoved);
}
}
如果你想确定哪个控制器被删除了,我想你可以利用索引。更多信息,请参阅Detect and track gamepads。
其他游戏输入设备,类似于手柄,可以参考Input for games下的文档。