包含此页的版本:
不含此页的版本:
虽然 tvOS 建立在 iOS 的基础上,但它确实带来了新的挑战,例如调整内容以配合 tvOS 输入,以及在更大的屏幕上显示。
tvOS 有两个主要输入:
Apple TV Remote (Siri Remote) 是一种多用途输入设备,可用作传统的菜单导航控制器、应用程序控制器、陀螺仪、加速度传感器和触摸手势设备。Unity 将 Apple TV Remote 输入路由到相应的 Unity API,但不会对该输入执行其他处理。你的应用程序可能需要对其输入方案进行一些调整,以利用 Apple TV 遥控器的特定输入功能。例如,应用程序可以将其视为传统的应用程序控制器,具有一个模拟轴和一个额外的作按钮,或者应用程序可以使用加速度计进行交互,例如转向。将应用程序移植到 Apple tvOS 时,您可以尝试各种方案。
Unity 提供 Made For iOS (MFi),这是对 iOS 和 tvOS 的标准化控制器支持。MFi控制器提供开箱即用的输入映射,你可以从 编辑(Edit) > 项目设置(Project Settings) > 输入管理器(Input Manager) 设置自定义动作映射。有关更多信息,请参阅处理游戏控制器输入和游戏控制器控制游戏中对象和角色的设备。
请参阅术语表.
另外两个无线 MFi 控制器可以连接到 Apple TV 设备,从而有效地将其变成控制台。您的应用程序可以像 iOS MFi 控制器一样使用控制器,但您必须确保其仅与 Apple TV 遥控器一起使用。Apple tvOS 系统将附加控制器的数量限制为两个。
以下是有关访问特定电视遥控器功能的一些技术细节:
| 特征 | 描述 |
|---|---|
| 触摸区域 | 映射到 Input.touches(Touch.type 设置为“间接”,Unity GUI 忽略)和纵杆输入 API(例如,Input.GetAxis(“Horizontal”))。 |
| 触摸区域点击 | 映射到按钮 A,然后映射到纵杆按钮 14 |
| 陀螺仪 | 映射到 Input.gyro。Input.gyro.attitude 派生自重力矢量,因此它不会绕平行于重力矢量的轴旋转。这同样适用于 Input.gyro.rotationRate。 |
| 加速度 | 映射到 Input.acceleration。 注意:Input.acceleration 派生自陀螺仪 API,可能存在一些不稳定之处。Apple tvOS SDK 没有专用的加速度计 API。 |
| 暂停/播放按钮 | 映射到按钮 X,然后映射到纵杆按钮 15 |
| 菜单按钮 | 长按会调用 tvOS 任务切换器。您无法覆盖此行为。 您的应用可以通过以下两种方式之一处理短点击: a) 如果 UnityEngine.tvOS.Remote.allowExitToHome 为 true,则返回到 tvOS 系统主屏幕。 b) 让你的应用响应点击(当 UnityEngine.tvOS.Remote.allowExitToHome 为 false 时,它映射到暂停按钮/纵杆按钮 0。这是默认行为。 您的应用应根据其当前状态在 a) 和 b) 之间切换: - 如果用户当前正在与顶部菜单交互,请启用行为 a)。 - 如果用户正在与应用实时交互,请启用行为 b) 并在他们按下此按钮时调用应用内暂停菜单。 |
| 滑动到遥控器的边缘 | 生成方向键(方向键)向上/向下/左/右按钮按下。 有关映射列表,请参阅游戏控制器输入映射。 |
您可以通过专用 API 控制 Apple TV Remote作模式,如下所示:
注意:当 UnityEngine.tvOS.Remote.allowExitToHome 为 false 时,菜单按钮将映射到纵杆按钮 0。这会导致与默认的“输入”窗口发生冲突,因为它还使用纵杆按钮 0 来映射“提交”虚拟按钮。这会导致“菜单”按钮触发对 UI 元素的作。要解决此问题,请在 输入(Input) 窗口中删除或修改 提交虚拟按钮绑定(菜单:编辑(Edit) > 项目设置(Project Settings),然后选择 输入(Input) 类别)。