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

Posted

技术标签:

【中文标题】tvOS - 通过非 Siri 遥控器进行游戏控制【英文标题】:tvOS - game control via non-Siri remote 【发布时间】:2016-02-29 06:12:31 【问题描述】:

我正在使用 Objective-C 开发一款游戏。 Siri 遥控器通过 GCMicroGamepad 运行良好,真正的 MFi 控制器通过 GCGamepad 运行良好。但是,第三方 IR 遥控器在游戏中根本不起作用(iPhone 上的 Remote App 或较旧的 Apple TV 第 3 代遥控器也不起作用)。

我如何识别和区分这些输入?


两天后...我发现当与第三方电视遥控器或 iPhone Remote.app 一起呈现时,UITapGestureRecognizer 可用于正确检测 Up、Down、Left、Right 和 Select 事件。定向事件实际上也是这些类型的遥控器所独有的——Siri 遥控器不会生成定向轻击事件。然而,不幸的是,点击 Siri 遥控器或第三方或 iPhone Remote.app 上的 Select 按钮将从我的点击识别器生成一个 Select 事件。我需要一些方法来区分这两者。

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

【问题讨论】:

你看过技术讲座视频了吗:developer.apple.com/videos/play/techtalks-apple-tv/4 那次谈话是否讨论了remote.app?我不记得了。 不,只有 Siri 遥控器和游戏控制器。抱歉,我错过了您问题中的那部分。 【参考方案1】:

我现在无法对此进行测试,但您可以通过使用 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 控制器)。

【讨论】:

以上是关于tvOS - 通过非 Siri 遥控器进行游戏控制的主要内容,如果未能解决你的问题,请参考以下文章

将 GCController 与 tvOS 模拟器一起使用

在 SwiftUI 中检测 Siri 远程滑动

Siri 遥控器。方向箭头

tvOS - 替换 UISlider

如何接收和使用 AVPlayer 的语音命令? (tvOS,迅速)

如何处理 tvOS 遥控器中的菜单按钮操作