原文: What you need to know when building a Gear VR app in Unity
作者: Patrick Catanzariti
【CSDN 有奖征稿啦】技术之路,共同进步,有优质移动开发、VR/AR/MR、物联网原创文章欢迎发送邮件至 [email protected]。
在使用 Unity 针对不同的平台开发虚拟现实应用程序时,我们会遇到一些问题。在此作者花费了一些时间将一款 Unity Google Cardboard App 移植到 Gear VR 上,并将其中遇到的坑及解决方案分享给大家,以帮助想要尝试的开发者少走一些弯路。
想要在 Gear VR 上正常地运行一款 App,前提要在 Unity 项目中有正确的“项目设置”以及“玩家设置”。这其实并不复杂,但是万一出错,那么还是得重新检查设置是否正确,那将会耗费大量的时间。下面笔者将介绍如何搭建 Gear VR 项目:
正确的设置如图所示:
在运行 App 时,看到 Gear VR 报“thread priority security exception make sure the apk is signed”这样的错误时,这意味着你的手机无法看到你的 Unity 项目的 Oculus 签名文件。
这并不是很难生成,但如果你经常使用 Google Cardboard App 或在项目开发中期更换手机时,这一点也容易被忽视掉!App 之所以需要一个 Oculus 签名文件,是因为其可以授予运行 VR 相关事宜的手机权限。
“所有 Gear VR 应用程序必须在开发期间使用 Oculus 签名文件(osig)进行签名,以便在移动设备上访问低级别 VR 功能。这个签名是以一种 Oculus 发出文件的形式。“——Oculus 官方文档
另外还可以使用 Oculus 签名文件(osig)生成器生成 OSIG 文件。它们提供了如何为你特定手机生成文件的完整详细信息,其过程只需确保使用 USB 连接电脑。
一旦从该生成器上下载文件后,将其添加到项目的Project /Assets/Plugins/Android/assets/文件夹中。
原来可以在手机上的 Gear VR 服务中启用开发者模式,这样无须连接到头显设备就可以运行 Gear VR App。
为此:
这是一个有趣的问题——当你配戴 Gear VR 头显时,无法查看日志。手机无法同时连接到 Gear VR 头显与 PC 。因此,该如何查看日志呢?这个很简单,你可以使用无线网连接手机日志。
1.使用相同 Wi-Fi 连接手机与电脑;
2.通过 USB 接口将手机连接到电脑;
3.手机 TCP/IP 连接端口 5555。打开电脑的 command (Mac 上 Terminal),然后键入以下内容:
adb tcpip 5555
4.输入之后应该显示成功,例如我的电脑显示:
* daemon not running. starting it now on port 5037 *
* daemon started successfully *
restarting in TCP mode port: 5555
5.此时可以移除你的手机;
6.连接到手机,需要其 IP 地址。你可以在 Settings > About tablet (or About phone) > Status > IP address 找到。
7.知道 IP 地址后,你可以使用终端命令连接到它:
adb connect (that IP address you just found out)
例如,如果 IP 地址为 192.168.13.37:
adb connect 192.168.13.37
8.如下所示,则连接成功:
connected to 192.168.13.37:5555
9.运行后,您可以使用以下命令检查手机是否已连接:
adb devices
如下所示,则连接成功:
List of devices attached
192.168.13.37:5555 device
10.然后查看该手机的日志:
adb logcat
11.以上命令会显示你的手机上的每一个日志!这样会有太多的日志了,那么可以过滤一下:
adb logcat -s Unity
如果以上步骤没有显示你想要的日志,根据 Unity 论坛上的答案也许能帮到你捕获更广泛的日志信息:
adb logcat -s Unity ActivityManager PackageManager dalvikvm DEBUG
12.最后命令行还是乱起八糟的?我知道这种感受。事实证明 Android Studio 可以有一个更清晰的视图来显示手机日志另外还可以实时过滤日志!为此,我只是在 Android Studio 中创建一个空白项目,然后使用在界面底部的“Android 监视器”。其中有一个过滤器框,你可以键入像“Unity”,就能够立即日志过滤:
在调试和修复一些 bug 时,我去编辑了 manifest 文件…但这并非是正确的做法。其实 Unity 会自动更新:
“在构建过程中,VR 支持的 Unity 项目能使用自动生成的 manifest 进行打包,并可以满足我们的需求来配置(通过landscape orientation、 vr_only 等等)。” —— Unity官方文档
在 Unity 编辑器中其实不能直接点击 Play 按钮,然后测试你的 App。相反,你必须每次都上传到手机上,这可能让你很烦。这里有一个解决方法,但是不一定适用每个人,即使用一个 Oculus DK2。
如果你有一个备用的 Oculus DK2,你可以把它连接到你的计算机然后进行快速测试,而不需要导出整个项目。只需插入 DK2,然后按一些 play 按钮即可!
请记住,在 Gear VR 上所呈现的未必就是很真实的,还是需要根据你自己想要的测试:
“Android 应用程序的渲染路径与用于 Rift 应用程序预览和构建的渲染路径大不相同,最大的不同在于外观和感觉以及性能上。” — Oculus 官方文档
目前 Unity(在撰写本文时) 最新稳定版本为 Unity 5.5.2,然而在 VR 模式下使用该版本运行成功,但导出 Gear VR 项目出现了一些问题。如果你发现在 VR 中 App 有问题且之前所有的设置正确的,那么尝试使用 Unity 5.5.1 版本,看看是否可以正常运行。