2015-08-13 19 views
16

Tôi tự hỏi làm thế nào tôi có nghĩa vụ phải xử lý đầu vào cho các ứng dụng UWP nhắm mục tiêu Xbox One. Tôi đã nhận thấy DirectInput, nhưng tôi thấy hai vấn đề với nó đối với trường hợp sử dụng của tôi:Hỗ trợ điều khiển cho Xbox một trong Windows UWP

  1. Từ MSDN, nó dường như chỉ hỗ trợ Xbox 360 bộ điều khiển

    XInput là một API cho phép các ứng dụng để nhận đầu vào từ Xbox 360 Controller cho Windows. Bộ điều khiển hiệu ứng rumble và đầu vào và đầu ra bằng giọng nói được hỗ trợ.

  2. DirectX và tất cả API của nó (Direct2d, Direct3D, Xinput, v.v ...) chỉ được hỗ trợ trên C/C++. Điều đó có nghĩa là ngay cả khi Xinput hỗ trợ Xbox một bộ điều khiển, tôi không thể sử dụng C# hoặc JavaScript để phát triển các ứng dụng thực sự phổ quát.

Tôi có các tùy chọn nào (ít nhất là C# liên quan) để hỗ trợ bộ điều khiển Xbox One trên ứng dụng Windows UWP?

CẬP NHẬT

Do một vài câu trả lời hữu ích chỉ ra đúng namespace, tôi nghĩ rằng tôi đã tổng hợp một số mã sử dụng 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 
} 

Nếu bạn đang sử dụng Javascript thì:

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

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

Đây là mẫu đang chạy của ứng dụng UWP sử dụng Windows.Gaming.Input https://github.com/tiagonmas/GamepadUWP –

+0

Tại sao bạn sử dụng var cho bộ điều khiển và đọc đối tượng? – BossmanT

Trả lời

13

Hãy xem không gian tên Windows.Gaming.Input. Lớp GamePad của nó nằm trong hợp đồng Universal API và có sẵn trên tất cả các gia đình và ngôn ngữ của thiết bị.

+0

Tôi đã xem API này và tôi sẽ chỉnh sửa câu hỏi của mình bằng mã ví dụ –

+2

Tôi muốn tham chiếu SDK UWP có nhiều ví dụ hơn:/ –

4

Để sao @ Rob Caplan - MSFT với một nguồn, blog này từ Microsoft Developer Network bang:

Windows 10: Có một API WinRT mới trong Windows.Gaming.Input namespace cho các ứng dụng Windows phổ biến. API này hỗ trợ cả Bộ điều khiển chung Xbox 360 và bộ điều khiển Xbox One, bao gồm quyền truy cập vào động cơ kích hoạt trái/phải. Phiên bản mới nhất của GamePad được triển khai bằng API mới này khi được xây dựng cho Windows 10. Lưu ý rằng các ứng dụng Windows Store XInput hiện có có thể liên kết với xinputuap.lib, đây là một bộ điều hợp cho API mới cho các ứng dụng Windows phổ biến - bộ điều hợp này không tồn tại âm thanh tai nghe.

+0

Ok, tuyệt, vì vậy nó cũng hỗ trợ bộ điều khiển Xbox 360 –

Các vấn đề liên quan