Skip to main content

上传至 VRChat 与 Quest 适配

随着 Quest 用户在 VRChat 上的知名度越来越高,Oculus Quest 的兼容性越来越受到追捧。幸运的是,使世界 Quest 兼容并不难,虽然可能会有些繁琐。

由于首次切换到 Quest 构建速度较慢,因此最好先对 PC 版本进行编辑和更正。此外,PC 和 Quest 之间的不同层次结构顺序可能会导致同步对象混乱!因此,请确保两个世界在层次结构中的相同位置具有同步对象,并使用相同的名称!

在上传之前,您应该确保进行以下一些最终的优化:

确保您的光照烘焙是准确的(自上次光照烘焙以来没有编辑任何静态对象,并且您的光探针没有错误)

检查 VRWorld Toolkit 的世界调试器以查找错误

烘焙遮挡剔除

使用 VRWorld Toolkit 的 Mass Texture Importer 功能压缩您尚未压缩的任何纹理(单击从场景获取纹理并然后应用)

您还可以压缩网格!为此,请单击 .fbx 文件,然后在网格压缩下单击中等(单击带有问号的圆圈以获取更多信息)

如果您使用视差贴图,如果可能,请将步骤设置为较低,或者如果它们对材质不是特别重要,则完全禁用它们(它们相对计算量较大,甚至 Oculus 都建议不用于 VR)

确保所有可拾取的对象都是层次结构根中的一个 GameObject 的子对象(Rigidbody 组件会每帧更新,因此所有父级 GameObject 也必须更新,因此只有一个父级 GameObject 可以使我们的物理更优化)

如果有任何实时光源,请提供选项以在实时光源上切换可拾取对象和阴影。后者需要使用两个单独的按钮进行 Udon 设置,并且脚本如下。如果您对如何设置任何一个感到困惑,请观看我的 UI 和 Udon 视频。

在上传之前,您应该首先测试您的世界,不仅在CyanEmu中,而且在VRChat中。为此,请转到VRChat SDK>控制面板并切换到构建选项卡,然后单击构建和测试;您可以增加客户端数量以模拟多个玩家。这样做不仅使您能够完美地了解您的世界在VRChat中的运行方式,而且还使我们能够访问VRWorldToolkit中的构建报告,我们可以使用该报告找到任何未压缩的资源。

在这个系列中,我想告诉您的另一个插件是相对可选的,但可能会派上用场。它称为VRBuildHelper,其主要功能是允许您像版本控制一样管理世界的多个分支,但它还带来了一些有用的功能(我主要将其用于此目的),我将在一会儿介绍。

准备好上传后,请检查VRWorldToolkit>World Debugger,看看是否有需要修复的内容。然后,将主摄像机放置在您希望预览世界图片的位置。

安装VRChat ApiTools,然后安装VRBuildHelper。转到Winidow>VRBuildHelper,单击“在此场景中设置构建助手”,然后单击“创建新分支”。

打开VRChat SDK>控制面板并切换到构建选项卡,然后单击构建和上传。

在构建完成但尚未上传之前,Unity将处于游戏视图,您需要输入世界的详细信息(可以在Vrchat.com上稍后编辑)。回到场景视图,在主摄像机的变换上单击3点>复制组件,然后在VRCCAM的新游戏对象的变换上单击3点>粘贴组件值。重复此过程,从主摄像机复制后期处理层组件,然后在VRCCAM上单击3点并单击“粘贴组件作为新组件”。

如果您已安装VRBuildHelper,您还会在上传屏幕上的预览图像旁边看到两个选项:您可能希望选中保存VRCCAM位置(另一个选项用于我之前提到的分支管理功能)。

在上传屏幕的底部,它会说你可以将这个世界发布到实验室;当你发布一个新世界时,你将不得不等待7天,直到你可以发布另一个。然而,你可以随心所欲地向现有世界推送更新。当你的世界发布到实验室时,如果其他用户在设置中启用了“显示社区实验室”,他们可以访问你的世界。当你的世界在实验室中时,在加载到它时会有警告,提示它尚未被批准,可能会表现不佳或包含令人反感的内容;此外,其他用户无法将其设置为主世界。为了让你的世界更快地被批准并离开实验室,人们可以访问它,花时间在其中,并把它设为最爱。实验室是一个难以理解的系统,如果你有关于它的更多问题,请阅读常见问题解答或在VRChat Discord中提问。我不再在评论部分回答问题。

如果你转到Window>VRBuildHelper,它将打开相应的窗口,你可以在底部看到两个按钮,紧挨着自主构建器:当前平台(PC或Quest,无论编辑器设置为哪个,你可以在窗口标题中看到)和所有平台。这将允许你通过一次点击上传你的世界,这意味着你不需要每次想要推送更新时都通过上传屏幕!问题是你必须先通过正常方式上传它。

现在让我们关注一下我们世界的Quest版本。

从PC切换到Android版本通常需要很长时间,但为了加快速度,我们可以设置一个本地缓存服务器。转到Edit>Preferences>Cache Server,将Cache Server Mode设置为Local。如果主驱动器上的空间有限,则可以在更大的驱动器上使用自定义缓存位置。现在,我们第一次从PC切换到Android和反之亦然可能会很慢,但随后的切换会快得多。

我们还有一个工具应该导入,叫做EasyQuestSwitch。一旦打开并设置好,你可以添加游戏对象和资产来自动完成两个平台之间的更改。由于Quest不支持后期处理,你可以添加一个新插槽,将你的后期处理卷拖到其中,然后取消选中Quest上的Active。此外,为所有使用Standard着色器的材质创建插槽。然后在项目选项卡搜索栏中,输入Standard Lite,并将着色器文件拖到Quest着色器插槽中。

在 VRChat SDK 窗口中,有一个按钮可以切换到 Android(针对 Quest),但据报道该按钮存在缺陷,因此我们将通过转到“文件”>“构建设置”(Ctrl+Shift+B)来切换平台。这将会在第一次切换时花费一些时间,但后续切换将会更快。

请确保您不要使用与 Quest 完全不兼容的着色器(如前述的带有抓取通道的水着色器)。

Quest 世界有一个 100MB 的大小限制。如果超过该大小,世界将无法上传。最快的解决方法是对纹理/光照贴图/网格/音频文件进行压缩/降低分辨率,或者为纹理使用更大的 ATSC 块大小。所有这些都可以在 Unity 内部只需点击几下即可完成。

打开 VRWorldToolkit 并检查以确保没有任何问题。

最后,使用 CyanEmu 测试世界以确保一切正常。如果一切正常,您可以现在将世界上传到 Quest!

如果您有一个 Quest,请亲自测试该世界;如果没有,请找一个 Quest 测试者来查找任何问题。如果一切正常,那么恭喜您!您已经完成了!您现在拥有了制作自己的优化、与 Quest 兼容的 VRChat 世界所需的知识!