tvOS - 通过非Siri遥控器进行游戏控制

时间:2016-02-29 06:12:31

标签: objective-c tvos gamepad siri-remote

我正在使用Objective-C开发游戏。 Siri遥控器通过GCMicroGamepad可以很好地工作,真正的MFi控制器可以通过GCGamepad很好地工作。但是,第三方IR遥控器在游戏中根本不起作用(iPhone上的远程应用程序或旧的Apple TV第三代遥控器也没有)。

如何识别并区分这些输入?

两天后......我发现当使用第三方电视遥控器或iPhone Remote.app时,可以使用UITapGestureRecognizer正确检测Up,Down,Left,Right和Select事件。定向事件实际上对于这些类型的遥控器也是唯一的--Siri遥控器不会生成定向抽头事件。不幸的是,点击Siri遥控器或第三方或iPhone Remote.app上的选择按钮将从我的点击识别器生成一个Select事件。我需要一些方法来区分这两者。

我能找到的唯一区别因素是,点击Siri遥控器会在GCMicroGamepad上生成按钮-A按下 - 第三方遥控器或iPhone Remote.app不会影响GCMicroGamepad所有。但尝试观看GCMicroGamepad的轻击释放事件非常不优雅,然后使用该事件过滤掉匹配的选择按钮事件。当然不推荐使用API​​;它似乎不是一个好的长期解决方案。如果我能告诉Siri遥控器在GCMicroGamepad模式下停止生成UI事件,那就太棒了。

1 个答案:

答案 0 :(得分:0)

我现在无法对此进行测试,但您可以使用GCEventViewController并将controllerUserInteractionEnabled属性设置为false来区分Siri Remote与第三方远程。这样,Siri Remote输入不应传递给UIKit(当GCEventViewController是第一个响应者时)。第三方遥控器的输入事件可能会传到UIKit,因为与Siri Remote不同,它不是GCMicroGamepad。

到目前为止,Apple确实不支持使用多个Siri遥控器,iOS遥控器或IR遥控器的多人游戏。但我认为它可能会来,因为the Remote app on iOS will soon support multiplayer gaming(所以我猜Apple TV会识别多个GCMicroGamePad控制器)。