このチュートリアルはhttps://cartoonsmart.com/how-to-support-external-game-controllers-with-swift-2-and-sprite-kit-for-the-new-apple-tv/に接続して、外部ゲームコントローラをスプライトキットのapple tvに接続しましたが、チュートリアルコードではできませんでした。エラーメッセージは表示されませんでしたが、単純に機能していませんでした。ここに私のコードは次のとおりです。swift - appleのテレビで外部ゲームコントローラに接続するには
func setUpControllerObservers() {
NotificationCenter.default.addObserver(self, selector: #selector(connectControllers), name: NSNotification.Name.GCControllerDidConnect, object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(disconnectController), name: NSNotification.Name.GCControllerDidDisconnect, object: nil)
}
func connectControllers() {
var count = 0
for controller in GCController.controllers() {
count = count + 1
print(count)
print(controller.extendedGamepad != nil)
print(controller.microGamepad != nil)
print(controller.gamepad != nil)
if (controller.extendedGamepad != nil && controller.playerIndex == .indexUnset) {
if (count == 1) {
controller.playerIndex = .index1
}
else if (count == 2) {
controller.playerIndex = .index2
}
else if (count == 3) {
controller.playerIndex = .index3
}
else if (count == 4) {
controller.playerIndex = .index4
}
controller.extendedGamepad?.valueChangedHandler = nil
setupExtendedController(controller: controller)
}
}
}
func disconnectController() {
}
func setupExtendedController(controller: GCController) {
controller.extendedGamepad?.valueChangedHandler = { (gamepad: GCExtendedGamepad, element: GCControllerElement) in
// not calling
}
}
デバッグするとき、私はそれがApple TVに接続していたにもかかわらず、GCController.controllers()
配列が空であることが判明しました。確かに、私は正常に動作したアプリストアのアプリでコントローラをテストしました。誰でも助けてくれますか?
編集:ここは私didMove機能である:
didMove(to view: SKView) {
setUpControllerObservers()
connectControllers()
}
、それはdidMove関数から呼ばれていた、と機能を表示するには、私のdidmoveは今 – Rishi
おかげ質問に与えられています。コントローラーを「発見」しようと思いますか?上記の編集を参照してください。 – Kymer