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。转到 Windows>VRBuildHelper,单击“在此场景中设置构建助手”,然后单击“创建新分支”。

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

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

如果您已安装 VRBuildHelper,您会在上传屏幕上看到两个选项:您可能想要勾选保存 VRCCAM 位置(另一个选项用于我之前提到的分支管理功能)。

在上传屏幕的底部提示您可以将这个世界发布到实验室;当您发布一个新世界时,需要等待7天才能再次发布。然而,您可以随时向现有世界推送更新。当您的世界在实验室中时,如果其他用户在设置中启用了“显示社区实验室”,他们可以访问您的世界。在加载实验室中的世界时,会有警告提示尚未批准,可能会表现不佳或包含令人反感的内容;此外,其他用户无法将其设置为主世界。为了加快您的世界被批准并离开实验室,邀请人们访问并标记他们的最爱。虽然实验室系统可能有些复杂,但如果您有任何疑问,请阅读常见问题解答或在 VRChat Discord 中提问。

转到 Windows>VRBuildHelper,它将打开相应的窗口,您可以在底部看到两个按钮,紧挨在自主构建器旁边:当前平台(PC或Quest,在窗口标题中可见)和所有平台。这将允许您通过一次点击上传您的世界,无需每次想要推送更新时都通过上传屏幕!但请注意,您必须先正常地上传它。

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

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

还有一个工具可供导入,名为 EasyQuestSwitch。一旦打开并设置好,您可以添加游戏对象和资产,以自动完成两个平台之间的切换。由于 Quest 不支持后期处理,您可以添加一个新插槽,将您的后期处理卷拖至其中,然后在 Quest 上取消该卷的激活状态。此外,为所有使用标准着色器的材质创建插槽。然后在项目选项卡的搜索栏中输入“Standard Lite”,并将着色器文件拖至 Quest 着色器插槽中。

在 VRChat SDK 窗口中找到一个按钮,可用于切换到 Android(适用于 Quest),尽管据报道该按钮有缺陷,我们可以通过转到“文件”>“构建设置”(Ctrl+Shift+B)来切换平台。初次切换时可能需要一些时间,但后续切换将更快。

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

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

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

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

如果您有一台 Quest,请自行测试该世界;如果没有,邀请一位 Quest 测试者来发现可能存在的问题。如果一切正常,那么恭喜您!您已经完成了!现在您已经具备了制作自己的优化、与 Quest 兼容的 VRChat 世界所需的知识!