Windows UWP中对Xbox One手柄的控制器支持

16

我想知道如何处理针对Xbox One的UWP应用程序的输入。我注意到了DirectInput,但对于我的用例,我看到两个问题:

  1. 根据MSDN,它似乎只支持Xbox 360控制器。

      

    XInput是一个API,允许应用程序从Xbox 360 Controller for Windows接收输入。 支持控制器震动效果和语音输入输出。

  2. DirectX及其所有API(Direct2d、Direct3D、Xinput等)仅支持C / C ++。 这意味着即使Xinput支持Xbox One控制器,我也无法使用C#或JavaScript开发真正的通用应用程序。

就支持Windows UWP应用程序上的Xbox One控制器支持而言,我有哪些选择(至少就C #而言)?


1
这是一个正在运行的 UWP 应用程序示例,使用 Windows.Gaming.Input https://github.com/tiagonmas/GamepadUWP - Tiago Andrade e Silva
为什么在控制器和读取对象时要使用var? - BossmanT
3个回答

13

请查看Windows.Gaming.Input名称空间。其中的GamePad类属于通用API合同,并可在所有设备系列和语言中使用。


我查看了这个API,我会编辑我的问题并附上示例代码。 - James Parsons
2
我希望UWP SDK参考文档有更多的示例 :/ - James Parsons

4
为了支持客观事实,这篇来自微软开发者网络的博客提到:
Windows 10:通用 Windows 应用程序中有一个名为Windows.Gaming.Input的新 WinRT API。该 API 支持 Xbox 360常见控制器和 Xbox One 控制器,包括访问左/右扳机马达。当构建 Windows 10 版本的时候,GamePad 的最新版本使用了这个新的 API 实现。请注意,现有的基于 XInput 的 Windows Store 应用程序可以链接 xinputuap.lib,它是通用 Windows 应用程序的新 API 的适配器——此适配器也不支持耳机音频。

0
DirectX及其所有API(Direct2d,Direct3D,Xinput等)仅支持C / C ++。虽然只有本地支持,但使用SharpDX从C#实现DirectInput非常简单。但是,对于读取XB控制器来说,DirectInput没有太多用处,因为触发器轴合并为一个,并且无法区分未按下任何触发器和同时按下两个触发器。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接