版本:Unity 6 (6000.0)
语言:英语
为 tvOS 开发
从 Unity UI 设置应用程序导航

在 tvOS 上支持输入设备

虽然 tvOS 建立在 iOS 的基础上,但它确实会带来新的挑战,例如调整内容以适应 tvOS 输入,并在大屏幕上显示。

tvOS 有两个主要的输入

  • Apple TV 遥控器
  • 适用于 iOS (MFi) 的控制器

Apple TV 遥控器

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

适用于 iOS (MFi)

Unity 提供适用于 iOS 和 tvOS 的标准化控制器支持,即适用于 iOS (MFi) 的控制器。MFi 控制器提供开箱即用的输入映射,您可以从 编辑 > 项目设置 > 输入管理器 设置自定义动作映射。有关更多信息,请参阅 处理游戏控制器输入游戏控制器控制游戏中的物体和角色的设备。
参见 术语表
.

可以将两个额外的无线 MFi 控制器连接到 Apple TV 设备,这实际上将其变成了一个游戏机。您的应用程序可以使用与 iOS MFi 控制器相同的方式使用控制器,但您必须确保其仅使用 Apple TV 遥控器也能使用。tvOS 系统将其他控制器的数量限制为两个。

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

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

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

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

为 tvOS 开发
从 Unity UI 设置应用程序导航