如何检测苹果电视的游戏控制器布局?如果控制器的布局不同,我想更改控件,这将使游戏更容易玩。 。例如,苹果推荐的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
}
//…
}