如何檢測蘋果電視的遊戲控制器佈局?如果控制器的佈局不同,我想更改控件,這將使遊戲更容易玩。 。例如,蘋果推薦的Nimbus Controller就像一個帶有兩個遊戲杆的遊戲站控制器,但我看起來似乎還有其他類型的控制器,它們有一個xbox設計,底部有一個d-pad和一個操縱桿,如果我能發現哪個是哪個,改變爲不同的控制器控制,就會使遊戲更容易發揮遊戲控制器佈局檢測 - swift
任何幫助,將不勝感激
如何檢測蘋果電視的遊戲控制器佈局?如果控制器的佈局不同,我想更改控件,這將使遊戲更容易玩。 。例如,蘋果推薦的Nimbus Controller就像一個帶有兩個遊戲杆的遊戲站控制器,但我看起來似乎還有其他類型的控制器,它們有一個xbox設計,底部有一個d-pad和一個操縱桿,如果我能發現哪個是哪個,改變爲不同的控制器控制,就會使遊戲更容易發揮遊戲控制器佈局檢測 - swift
任何幫助,將不勝感激
最後我只是單純地詢問他們的遊戲控制器佈局的用戶。 Ercell0的答案是連接和使用遊戲控制器的好方法,但並不真正回答我的問題。
你應該使用控制器的配置文件來實質控制,以遊戲的輸入映射。
控制器被自動發現,一個物理控制器由一個GCController對象來代表,這個對象控制着諸如GCGamepad,extendedGamepad等控制器的控制。你應該檢查哪些控制被註冊到了每個控制器上。從文檔上Discovering And Connecting Controllers:
「後您的應用程序已經完成啓動,操作系統 自動創建連接的控制器的列表。調用 控制器類方法來檢索GCController對象數組 所有連接的控制器。」
在它們用於.GCControllerDidConnect通知註冊蘋果sample code並澆鑄該通知對象作爲GCController實例到該設置的一個函數對照如果存在的話,解析控制器和分配相應的處理方法:
NotificationCenter.default.addObserver(self, selector: #selector(GameViewController.handleControllerDidConnectNotification(_:)), name: .GCControllerDidConnect, object: nil)
@objc func handleControllerDidConnectNotification(_ notification: NSNotification) {
let gameController = notification.object as! GCController
registerCharacterMovementEvents(gameController)
}
private func registerCharacterMovementEvents(_ gameController: GCController) {
//…
// Gamepad D-pad
if let gamepad = gameController.gamepad {
gamepad.dpad.valueChangedHandler = movementHandler
}
// Extended gamepad left thumbstick
if let extendedGamepad = gameController.extendedGamepad {
extendedGamepad.leftThumbstick.valueChangedHandler = movementHandler
}
//…
}