Oculus分享:在Quest头显中调试Unity App开发
(映维网 2021年08月13日)对于VR应用而言,调试是一个非常重要的步骤。日前,Oculus分享了一份关于直接在头显中调试Unity应用的博文。下面是映维网的具体整理:
对于本文,我们将介绍调试基于Unity的Quest应用所需的工具,包括一个目前尚未充分利用的方式:将调试器直接接到头显。
目前,Unity是Oculus Quest平台最常用的引擎之一。对于Unity开发者,最常见的开发工作流如下所示:
-
通过Link将Quest接到PC,并在头显中启用Oculus Link。
-
使用Unity play in editor迭代应用。所述编辑器在开发PC执行计算和渲染,并通过Oculus Link将输出帧发送到Quest。
-
偶尔在Unity中生成Android版本,禁用Oculus Link,并将Android版本侧载到Quest。这时,Quest将本地执行计算和渲染。
尽管侧载Android版本能够表示用户开玩应用时的体验,但通过Oculus Link进行原型设计可以缩短迭代时间,在处理性能优化之前利用更强大的硬件,并为Unity提供完善、简单的调试管道。
当然,你可能会遇到仅在头显中出现的问题,并且无法通过play in editor进行复刻。或者,你可能正在实现只有在Quest本地运行时才可用的功能,例如手部追踪或电源管理。
当你在跟踪问题或实施仅在Android版本中出现的功能时,你可以尝试下面经过社区洗礼的工具供:
-
可以使用RenderDoc for Oculus分析GPU问题
-
可以使用Unity Profiler分析CPU性能问题
-
可以使用Perfetto对应用程序进行测试,以获取系统范围的性能数据
有时候,你只想在代码中放置一个breakpoint,并在Quest头显触发应用时检查其状态。以下信息概述了启用所述过程的必要步骤。
1. 准备
-
面向Quest的Unity开发环境设置,包括Android SDK和NDK
-
开发者模式下的Quest头显,Link数据线和ADB驱动程序
-
Visual Studio 2019(免费的Community版本即可)+“Game Development for Unity”包(如果已经安装了Visual Studio 2019,则可以启动“Visual Studio Installer”,并单击Modify改”,以确保安装“Game Development for Unity”包)。
-
为Unity应用生成的Visual Studio.sln和.csproj文件(如果Visual Studio是默认的外部脚本编辑器,则将自动创建所述脚本;如果它不是默认的外部脚本编辑器,则可以通过“编辑>首选项>外部工具”,然后单击“重新生成项目文件”按钮)。
2. 步骤
-
在Unity中,选中“Development Build”和“Script Debugging”复选框,为应用生成Android版本。
-
通过ADB或Oculus Developer Hub将生成的版本安装到头显中,然后启动。
-
在Visual Studio 2019中打开应用的Unity generated.sln,并根据需要放置breakpoints。
-
在Visual Studio 2019中,选择Debug > Attach Unity Debugger。
-
在显示的菜单中,你应该看到“Oculus Quest”(或“Oculus Quest 2”)的条目。选择它并单击“OK”
-
等待Visual Studio成功连接。当VisualStudio底部的状态栏变成橙色,breakpoints标记变成红色时即为成功。
-
在头显中执行操作以选择breakpoints,然后进行调试。
-
通过使用这个管道,头显调试体验将与r in-editor调试体验更加接近。
3. 问答
为什么在VisualStudio的“Select Unity Instance”窗口中没有显示我的头显?
要显示你的头显,以下两项都必须为true:
-
你的头显必须出现在adb devices输出的命令提示符中。
-
当前正在头显中运行应用,并选中“Development Build”和“Script Debugging”复选框。除非这两个都是true,否则侦听Visual Studio调试连接的进程将不会在头显运行。
如果我需要调试在第1帧上发生的事情,该怎么办?
遗憾的是,我们目前不支持Unity builds for Quest中的“Wait for Managed Debugger”切换。相反,我们建议在启动应用程序的其余部分之前,使用等待预定信号的启动场景修改应用程序。
我可以通过Wi-Fi使用ADB over Wi-Fi来调试我的应用吗?
对只要在adb device输出中看到192.168.x.y:z,管道就完全相同。
如果你有任何问题,请访问Oculus开发者论坛。