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

问题描述 投票:0回答:1

我正在用 Objective-C 开发一款游戏。 Siri 遥控器通过 GCMicroGamepad 可以很好地工作,真正的 MFi 控制器可以通过 GCGamepad 很好地工作。然而,第三方红外遥控器在游戏中根本不起作用(iPhone 上的远程应用程序或较旧的 Apple TV 第 3 代遥控器也不起作用)。

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


两天后...我发现 UITapGestureRecognizer 可用于在使用第三方电视遥控器或 iPhone Remote.app 时正确检测向上、向下、向左、向右和选择事件。定向事件实际上也是这些类型的遥控器所独有的 - Siri 遥控器不会生成定向点击事件。然而不幸的是,点击 Siri 遥控器或第三方或 iPhone Remote.app 上的“选择”按钮将从我的点击识别器中生成“选择”事件。我需要一些方法来区分两者。

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

objective-c tvos gamepad siri-remote
1个回答
0
投票

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

到目前为止,Apple 确实不支持使用多个 Siri 遥控器、iOS 遥控器或 IR 遥控器的多人游戏。但我认为它可能会到来,因为iOS 上的远程应用程序将很快支持多人游戏(所以我猜 Apple TV 将识别多个 GCMicroGamePad 控制器)。

© www.soinside.com 2019 - 2024. All rights reserved.