Version: Unity 6.0 (6000.0)
语言 : 中文
针对 tvOS 开发
通过 Unity UI 设置应用程序导航

tvOS 上支持的输入设备

虽然 tvOS 建立在 iOS 的基础上,但它确实带来了新的挑战,例如要让内容适应 tvOS 的输入功能,并且能在更大的屏幕上显示。

tvOS 有两种主要输入:

  • Apple TV 遥控器
  • Made For iOS (MFi) 控制器

Apple TV 遥控器

Apple TV 遥控器(Siri 遥控器)是多功能输入设备,既可用作传统菜单导航控制器、英语程序控制器、陀螺仪和加速度传感器,也可用作触摸手势设备。Unity 将 Apple TV 遥控器输入路由到相应的 Unity API,但不对该输入进行任何其他处理。应用程序可能需要对自己的输入方案进行一些调整,以利用 Apple TV 遥控器独特的输入特性。例如,应用程序可以将该遥控器用作传统应用程序控制器(具有一个模拟轴和一个额外的动作按钮),或者也可以用作加速度计以进行交互(例如,用于转向)。在将应用程序移植到 tvOS 时可以尝试各种方案。

Made for iOS (MFi)

Unity 提供了 Made For iOS (MFi),这是针对 iOS 和 tvOS 的标准化控制器支持。MFi 控制器提供可直接使用的输入映射,您可以设置自定义操作映射(编辑 (Edit) > 项目设置 (Project Settings) > 输入管理器 (Input Manager))。有关更多信息,请参阅手柄游戏控制器游戏控制器

可将另外两个无线 MFi 控制器连接到 Apple TV 设备,从而有效地将该设备转变为游戏主机。应用程序可以像 iOS MFi 控制器一样使用这些控制器,但你必须确保该应用仅通过 Apple TV 遥控器也能正常使用。tvOS 系统将附加控制器的数量限制为两个。

以下是关于访问特定 TV 遥控器功能的一些技术细节:

功能 描述
触控区域 同时映射到 Input.touchesTouch.type 设置为 Indirect 并被 Unity GUI 忽略)和游戏杆输入 API(例如 Input.GetAxis(“Horizontal”))。
触控区域点击 映射到按钮 A,而按钮 A 又映射到游戏杆按钮 14
陀螺仪 映射到 Input.gyroInput.gyro.attitude 派生自重力矢量,因此不会围绕平行于重力矢量的轴进行旋转。Input.gyro.rotationRate 也是同样的情况。
加速 映射到 Input.acceleration
注意Input.acceleration 派生自陀螺仪 API,可能有一定的不稳定性。tvOS SDK 没有专用的加速度计 API。
暂停/播放按钮 映射到按钮 X,而按钮 X 又映射到游戏杆按钮 15
菜单按钮 长按会调用 tvOS 任务切换器。无法覆盖此行为。
您的应用可以通过两种方式之一处理短点击:
a) 如果 UnityEngine.tvOS.Remote.allowExitToHome 为 true,返回 tvOS 系统主屏幕。
b) 让应用程序响应点击(当 UnityEngine.tvOS.Remote.allowExitToHome 为 false 时,此按钮映射到 Pause 按钮/游戏杆按钮 0)。这是默认行为。
应用程序应根据其当前状态在 a)b) 之间切换:
- 如果用户当前正在与顶部菜单交互,请启用行为 a)
- 如果用户正在实时与应用交互,请启用行为 b),并在他们按下此按钮时调用应用内暂停菜单。
轻扫至遥控器的边缘 生成方向键盘 (D-pad) 上/下/左/右按钮按压。
有关映射列表,请参阅游戏控制器输入映射

可通过专用 API 控制 Apple TV 遥控器操作模式,如下所示:

注意:当 UnityEngine.tvOS.Remote.allowExitToHome 为 false 时,Menu 按钮将映射到游戏杆按钮 0。这会导致与默认的 Input 窗口发生冲突,因为它还使用游戏杆按钮 0 来映射提交 (Submit) 虚拟按钮。这将导致 Menu 按钮触发对 UI 元素的操作。要解决此问题,请在 Input 窗口(菜单:编辑 (Edit) > 项目设置 (Project Settings),然后选择 Input 类别)中删除或修改 Submit 虚拟按钮绑定。

针对 tvOS 开发
通过 Unity UI 设置应用程序导航