跨平台设置
设置跨平台世界或虚拟形象实际上非常简单!您所要做的就是使用重复的项目来构建某个资产的 Android 版本,并将其上传为与 VRChat PC 资产相同的内容 ID。客户端会自动判断需要下载的资产版本是哪一个。
如果您需要如何正确(轻松)执行此操作的更多详细信息,这里为您准备了一个简短的指南。
复制您的项目(已过时)
Asset Database v2
随着 Asset Database v2 的出现,在平台之间切换几乎不需要像之前那么长的时间!您也没有很大必要复制您的项目了。您可以选择跳过此部分。
您还可以使用 EasyQuestSwitch,它可以使资产切换变得更加容易。
我们先假设您已经有一个 VRChat PC 项目,其中有着您的世界或虚拟形象。如果您不是上述这种情况,您需要先设置和创建 PC 项目。您也可以先创建 Android/Quest 项目,随意即可。
在您得到能够由 VRChat PC 构建和上传的项目后,继续推进即可。此过程与标准构建和上传步骤相同。
在您的 VRChat PC 内容被构建后,您需要将这一个项目复制用于 Quest(Android)项目版本的搭建。请先关闭 Unity,复制目标项目文件夹,然后将项目的副本粘贴到任意位置。您基本上是在进行复制您的项目的操作。复制项目的位置并不重要,只要它们能够是独立且不同的项目即可。您也许想把项目命名为 我的 VRChat 项目名字-Quest
?当然这么做只是为了让一切保持井然有序。
请注意,对一个项目所做的任何更改,都应该同步到两个项目共同进行更改。如果只是移动游戏对象之类的简单操作,则只需在一个项目中进行移动,然后将转换值复制粘贴到另一个项目中即可。
对于更复杂或影响更广的更改,您可能需要重新复制项目,或者小心翼翼地进行复制更改操作。
设置 Quest 环境
在 Unity 中打开 Quest 项目。由于它是复制体,因此不应在这个项目进行任何更改。只不过我们即将颠覆这一局限。现在我们可以将构建目标直接交换到 Android 环境。操作方法如下:
有一些重要的注意事项需要您关心:
- 您需要安装 Unity 的 Android SDK。否则该选项将不会弹出。
- 虽然您可以在 Windows 和 Android 之间来回切换,但您可能不会想这样去做。它会直接改变文件,而您也许想要为 Quest 制作维护一个缩水版的世界,并且......
- 将世界切换到 Android 平台可能需要大量时间。值得庆幸的是,如果您维护的世界项目是两个独立的项目,则您只需执行一次。如果您的项目很大或存着几十个虚拟形象,则您可能只想将所需的内容导出为预制件或 UnityPackages,然后从头开始创建一个空的 Android 项目。
本地缓存服务器
您可以使用 Unity 的缓存服务器(可在本地运行)来减少切换平台所需的时间。您可以在此处阅读有关缓存服务器的更多信息。请注意,这可能会占用大量磁盘空间。
微调和优化
现在您大概已经设置好了两个单独的项目,您需要开始优化工作了。不要想着偷懒。Quest 虽然是一款功能强大的头戴式设备,但它的性能远不如典型的 VR-ready PC 强大。您需要查看我们的 Quest 内容优化页面以了解您需要做的是些什么。对于世界来说,优化工作涉及到烘焙光照、降低几何体复杂性、避免透明度和降低纹理分辨率。对于虚拟形象来说,优化工作涉及到去除多余的组件、多余的骨骼、降低几何体的复杂性、避免透明度和降低纹理大小。
这项操作会花掉相当一段时间,并且可能会很具有挑战性。针对移动设备进行优化是很困难的!值得庆幸的是网上有着大量的资源,即使是在 YouTube 上粗略搜索“优化Unity的移动版”,您也会发现大量的优质内容。
您还可以查看我们关于优化 Oculus Quest 内容的一些文档。
- Quest 内容优化
- Quest 内容限制
- 虚拟形象性能排名系统
SYNCVIDEOSTREAM 和 SYNCVIDEOPLAYER 组件
目前,Quest 不支持 SyncVideoStream 和 SyncVideoPlayer。将这些放入 Quest 世界会导致严重的问题!只需将它们从 Quest 版本中删除即可。但是,仅在 PC 版本中使用视频播放器也会导致问题。如果实例的 Master 是 Quest 用户,您将遇到更多问题。
尽管在 Quest 上同步视频播放是最终目标,但我们建议在获得平台官方支持之前不要使用它们。
上传内容
一旦您的世界或虚拟形象准备好,您就随时可以上传了!此上传过程与 VRChat PC 上传过程相同,但 SDK 会更加敏感地警告您相关性能问题的信息。
您需要将世界或虚拟形象上传到与 VRChat PC 版内容相同的蓝图 ID。蓝图 ID 由游戏对象上的管线管理器组件决定,该组件通常附带 VRC Scene Descriptor,通常位于 VRCWorld 预制件上。点击“Detach”按钮编辑,然后在 蓝图ID 的位置粘贴您上传的那个版本项目的 ID(您也可以在 VRChat SDK 控制面板的“Content Manage”选项卡中找到它)。
您要上传的版本取决于原始项目的构建目标。如果您处理的原始项目是 Android 项目,则该项目将上传为 Quest 版本。如果构建目标是 Windows 项目,则将上传为 PC 版本。基本上就是这样——一旦您上传了,所有想查看您创建的内容的客户端都会像这样与我们的服务器交谈:
“嘿,我是 Oculus Quest,我想看看这个内容。” “好的,这是这项目的 Quest 版本。”
“嘿,我是 VRChat PC 用户,我想看看这个内容。” “好的,这是这项目的 VRChat PC 版。”
如果某个虚拟形象不适配于您所在的平台,您将看到一个占位符虚拟形象,指示该用户使用的虚拟形象所适配的平台。
如果某个世界不适配于您所在的平台,您将无法进入该世界的房间或通过 UI 面板加入该世界。
但是,如果您加入一个同时拥有 Quest 和 PC 版本的世界,并且房间中的人同时拥有 Quest 和 PC 版本的虚拟形象,您便可以根据您的平台看到相应的世界,并能够与所有人一起闲逛,莫得一点问题!
骨架(Armature)必须相同!
要使虚拟形象在跨平台中正常工作,PC 和 Quest 版本之间的骨架路径必须与头部、手部和脚部等基本骨骼相同。此外,“根骨”(层次结构中的第一个骨骼)的缩放和旋转在版本之间必须相同。
Quest 和 PC 虚拟形象之间的骨架(Armature)必须基本相同。如果您想在 Quest 版本中去除非必要的骨骼,如裙子/头发/等骨骼,那其实还行——但千万不要改变骨骼层级窗口(hierarchy)的基本结构。这样做会导致跨平台检查时出现一些灵异事件。
最重要的是,“根骨”(如 Hips)应该是层级窗口(hierarchy)中仅次于骨骼游戏对象的第一根骨骼。只要“根骨”的设置(缩放、旋转)保持原样,就大概没有问题。
警告
我们都知道,为 PC 和 Quest 维护两个“分别单独优化但内容相同”的项目并不好过,而且这个过程有那么点重复。但是,此过程为您提供了大量的控制权,并让可以您在不同的平台上发挥创造力,同时守住对您目标平台的优化级别。
随着时间的推移,我们将研究用于改进此过程的方法,但请记住,其中许多限制是由于在 Unity 中管理项目的方式限制造成的。
技巧
- 您的 VRChat PC 虚拟形象可以拥有 VRChat Quest 虚拟形象无法拥有的各种花里胡哨的东西。根据平台的不同,用户将看到适合其客户端的版本。
- 您也可以在这方面发挥一点创意——您可以为 PC 用户提供一个高面数世界或虚拟形象,然后为 Quest 用户提供低面数(但仍然炫酷的)版本。
- 为 PC 和 Quest 版本的世界整上一组箱体碰撞体或低多边形网格碰撞体,并使用它来代替网格碰撞体。将碰撞体绑到特定坐标处的空游戏对象的子集,在这时如果更新一个项目,您便可以轻松地将该对象复制粘贴到另一个项目。这样一来,您就永远不会看到不同平台用户之间的“微妙浮动”,也不会遇到极其消耗性能的高顶点数网格碰撞器的问题。
- 请记住,您需要不惜一切代价避免材质透明度!这会烧掉很多的性能。
- 顺便说一句,是的,“alpha cutout”也算作透明度。