2015-08-13 13 views
16

Zastanawiam się, jak mam obsługiwać wejścia dla aplikacji UWP kierowanych na Xbox One. Zauważyłem DirectInput, ale widzę dwa problemy z tym dla moich przypadkach zastosowanie:Obsługa kontrolera dla konsoli Xbox one w Windows UWP

  1. Od MSDN, wydaje się tylko do obsługi Kontroler Xbox 360

    XInput to API, które umożliwia aplikacjom odbierać wejście z kontrolera Xbox 360 dla Windows. Obsługiwane są kontrolowane dźwięki dzwonka oraz wejścia i wyjścia głosowe.

  2. DirectX i wszystkie jego API (Direct2D, Direct3D, xinput, etc ...) są obsługiwane tylko w C/C++. Oznacza to, że nawet jeśli Xinput obsługiwał kontrolerów Xbox jeden, nie mogłem użyć C# lub JavaScript, aby opracować prawdziwie uniwersalne aplikacje.

Jakie mam opcje (przynajmniej tak daleko, jak C# jest zaniepokojony) do podtrzymywania Xbox One wsparcie kontrolera w aplikacji systemu Windows UWP?

UPDATE

Ze względu na kilka pomocnych odpowiedzi wskazujące właściwą nazw, myślę, że syntetyzowane kodu przy użyciu 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 
} 

Jeśli używasz JavaScript następnie:

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

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

Oto aktualna przykładowa aplikacja UWP z wykorzystaniem Windows.Gaming.Input https://github.com/tiagonmas/GamepadUWP –

+0

Dlaczego używasz var do kontrolera i obiektów do czytania? – BossmanT

Odpowiedz

13

Spójrz na przestrzeń nazw Windows.Gaming.Input. Jego klasa GamePad znajduje się w umowie Universal API i jest dostępna dla wszystkich rodzin urządzeń i języków.

+0

Spojrzałem na to API i będę edytować moje pytanie z przykładowym kodem –

+2

Chciałabym, żeby w UWP SDK było więcej przykładów:/ –

4

Aby wykonać kopię @Rob Caplan - MSFT ze źródłem, to blog od stanów Microsoft Developer Network:

systemu Windows 10: Jest nowy WinRT API w Windows.Gaming.Input nazw dla uniwersalne aplikacje Windows. Ten interfejs API obsługuje zarówno wspólny kontroler konsoli Xbox 360, jak i kontroler Xbox One, w tym dostęp do lewych/prawych silników spustowych. Najnowsza wersja GamePada jest zaimplementowana przy użyciu tego nowego interfejsu API, gdy jest zbudowany dla systemu Windows 10. Zauważ, że istniejące aplikacje Windows Store oparte na XInput mogą łączyć się z xinputuap.lib, który jest adapterem dla nowego interfejsu API dla uniwersalnych aplikacji Windows - ta karta też nie ma dźwięku z zestawu słuchawkowego.

+0

OK, fajnie, więc obsługuje także kontroler Xbox 360 –

Powiązane problemy