Unity之tvOS平台注意事项

更新:
遥控器映射字母失效(A、X等),经测试如下正常使用

Input.GetAxisRaw("Horizontal")/Input.GetAxisRaw("Vertical") 
Input.GetKeyDown(KeyCode.JoystickButton0)//菜单 
Input.GetKeyDown(KeyCode.JoystickButton14)//触摸区域 点击 
Input.GetKeyDown(KeyCode.JoystickButton15)//暂停、播放按钮
Input.gyro.rotationRate 
Input.acceleration

 


说明

文档的主要目的是帮助开发人员从iOS过渡到tvOS。Apple TV平台,是建立在iOS平台基础之上的,称为tvOS,但也给应用程序开发人员带来了新的挑战。您可以轻松地在tvOS上部署现有的iOS应用程序,但通常必须调整应用程序的内容以使用tvOS输入控件并在更大的屏幕上正确显示。

先决条件

要为tvOS开发,您需要:
1.第四代苹果电视设备(你还需要一个USB C到USB 3.0电缆,这不是随消费者的包)。
2.Xcode 7.1或更高版本。
3.与iOS设备相同的方式设置此设备的provisioning。要测试provisioning是否正常工作,请使用Xcode创建一个空的tvOS应用程序。

设置说明

1.最好创建一个单独的分支或应用程序副本并将其移植到Apple TV。许多iOS插件与Apple TV不兼容,因为Apple TV仅支持iOS框架的一个子集。Unity无法控制第三方插件及其跨平台兼容性。
2.如果你的app在磁盘上使用的空间超过4GB,请将其分成更小的部分并使用按需资源(On Demand Resources)。要了解更多信息,请参阅下面的按需资源部分。

注意:Bitcode包含在tvOS构建中,这将向可执行文件添加大约130mb。应用商店服务器会删除此代码,因此不会影响分发大小。要估计位代码大小,请使用otool-l从命令行分析可执行文件中的LLVM部分。

有效输入方式

tvOS操作系统有两个主要输入方式:

  • 苹果电视遥控器(强制输入)
  • 为iOS(MFi)制造的控制器(可选)

苹果电视遥控器(Siri Remote)是一种多功能输入设备,可做为传统菜单导航控制器、app控制器、陀螺仪、加速度传感器和触摸手势设备使用。Unity将Apple TV遥控器的输入路由到相应的Unity APIs,但不对该输入执行其他处理。

您的app可能需要对其输入方案进行一些调整,以利用Apple TV遥控器的特定输入功能。例如,你的app可以将其视为一个传统的应用程序控制器,有一个模拟轴和一个额外的操作按钮,或者你的app可以使用加速计进行交互,如转向。将应用程序移植到tvOS时,可以尝试各种方案。

Unity为iOS(MFi)提供支持,这是对iOS和tvOS的标准化控制器。MFi控制器提供开箱即用的输入映射,您可以在Unity编辑器中设置自定义操作映射(menu: Edit > Project Settings…,然后选择输入类别)。有关更多信息,请参阅有关iOS游戏控制器支持的文档,以及有关游戏控制器的Apple developer文档.

两个无线iOS(MFi)app控制器可以同时连接到Apple TV设备,可有效地将其转变为一个控制台。您的app可以使用与iOS MFi控制器相同的控制器,但您必须确保其仅适用于Apple TV遥控器。tvOS系统将附加控制器的数量限制为两个。

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

Unity之tvOS平台注意事项_第1张图片

您可以通过以下专用API控制Apple TV遥控器操作模式:
*UnityEngine.tvOS.Remote.allowExitToHome
*UnityEngine.tvOS.Remote.allowRemoteRotation
*UnityEngine.tvOS.Remote.reportAbsoluteDpadValues
*UnityEngine.tvOS.Remote.toucheenabled

注意:当UnityEngine.Apple.TV.Remote.allowExitToHome为false时,菜单按钮映射到操纵杆按钮0。这会导致与默认输入窗口冲突,因为它还使用操纵杆按钮0映射确定虚拟按钮。这将导致Menu按钮触发对UI元素的操作。要解决此问题,请删除或修改输入窗口(menu: Edit > Project Settings)中的确认虚拟按钮绑定,然后选择输入类别)。

Unity UI设置app导航

必须为Apple Game Center的本机排行榜UI提供自定义视觉资源. 下面是如何在Xcode中设置它们:

  • 在Unity编辑器中打开Input窗口。找到确认虚拟输入的第一个匹配项,展开它,并将其Alt正按钮更改为操纵杆按钮14。 
  • 在场景中选择EventSystem对象. 在Inspector中,找到EventSystem组件,并设置对应在第一个选定属性中接收初始焦点的UI appObject的引用。您可能需要在独立输入模块组件中启用Force input module属性。

注意:当您的app在电视模拟器中运行时,Apple TV遥控导航将不起作用。

向Xcode项目添加排行榜资源

Apple Game Center要求您为其本机排行榜UI提供自定义视觉资源。下面是如何在Xcode中设置它们:

  1. 打开XCode项目。
  2. 选择Images.xclassets。
  3. 在列出的文件下单击鼠标右键,然后从出现的菜单中选择“Game Center > New AppleTV Leaderboard”。
  4. 添加图像资源。
  5. 选择“排行榜”,然后在右侧窗格中选择“Edit View”。
  6. 在“Identifier field”字段中输入您的排行榜ID。

提示:如果在进行此更改后资产编译失败,请尝试禁用Xcode生成设置窗口中的按需资源(Demand Resources)选项。

实施按需资源支持

tvOS限制app可以保留多少磁盘空间。主app安装捆绑包大小不能大于4GB。对于在用资产,附加可下载内容的限制高达2GB,总可下载内容的限制高达20GB。苹果推荐tvOS可下载内容的点播资源(ODR),这是对tvOS最好的磁盘空间管理。Unity通过资产包支持ODR。有关ODR实现的更多信息,请参阅Unity博客Mastering on-demand resources For Apple platforms。

已知限制

  • 屏幕键盘仅限于单行输入。
  • tvOS模拟器没有将苹果电视遥控器模拟为应用程序控制器,这意味着应用程序无法访问其输入。

 

你可能感兴趣的:(Swift/iOS/tvOS)