2015-08-13 2 views
16

Мне интересно, как я должен обрабатывать ввод для приложений UWP, ориентированных на Xbox One. Я заметил, DirectInput, но я вижу две проблемы с ним для моих случаев использования:Поддержка контроллера Xbox один в Windows UWP

  1. От MSDN, кажется, только для поддержки Xbox 360 контроллеров

    XInput является API, который позволяет приложениям получать вход от контроллера Xbox 360 для Windows. Поддерживаются эффекты грохота контроллера и голосовые входы и выходы.

  2. DirectX и все его API (Direct2d, Direct3D, Xinput и т. Д.) Поддерживаются только на C/C++. Это означает, что даже если Xinput поддерживает Xbox один контроллер, я не мог использовать C# или JavaScript для разработки действительно универсальных приложений.

Какие параметры у меня есть (по крайней мере, до C#) для поддержки поддержки контроллера Xbox One в приложении Windows UWP?

UPDATE

Благодаря пару полезных ответов, указывающих правильное пространство имен, я думаю, что я синтезировал код с помощью Windows.Gaming.Input

/* 
* Note: I have not tested this code. 
* If it is incorrect, please do edit with the fix. 
*/ 
using Windows.Gaming.Input; 

// bla bla bla boring stuff... 

// Get the first controller 
var controller = Gamepad.Gamepads.First(); 

// Get the current state 
var reading = controller.GetCurrentReading(); 

// Check to see if the left trigger was depressed about half way down 
if (reading.LeftTrigger == 0.5;) 
{ 
    // Do whatever 
} 

Если вы используете JavaScript, то:

var controller = Windows.Gaming.Input.Gamepad.gamepads.first(); 
var reading = controller.getCurrentReading(); 

if (reading.leftTrigger === 0.5) { 
    // Do whatever 
} 
+1

Вот бегущий образец UWP приложения, используя Windows.Gaming.Input https://github.com/tiagonmas/GamepadUWP –

+0

Почему вы используете вар для контроллера и чтения объектов? – BossmanT

ответ

13

Взгляните на пространство имен Windows.Gaming.Input. Его класс GamePad находится в контракте Universal API и доступен для всех семейств устройств и языков.

+0

Я посмотрел на этот API, и я отредактирую свой вопрос с примера кода –

+2

. Я хочу, чтобы ссылка UWP SDK имела больше примеров:/ –

4

Резервное @Rob Каплан - MSFT с источником, этот blog из состояний сети разработчиков Microsoft:

для Windows 10: Существует новый WinRT API в Windows.Gaming.Input имен для универсальные приложения для Windows. Этот API поддерживает как общий контроллер Xbox 360, так и контроллер Xbox One, включая доступ к левым/правым триггерным двигателям. Последняя версия GamePad реализована с использованием этого нового API при построении для Windows 10. Обратите внимание, что существующие приложения на базе Windows Store, основанные на XInput, могут ссылаться на xinputuap.lib, который является адаптером для нового API для универсальных приложений Windows - этот адаптер также не поддерживает звук гарнитуры.

+0

Хорошо, круто, поэтому он поддерживает контроллер Xbox 360 –

Смежные вопросы