Unity资源打包分配策略
发表于2018-09-29
在使用资产包时,您可以自由地将任何资产分配给任何您想要的包。然而,在设置包时有一些策略需要考虑。这些打包分组策略是指用于您认为适合您的特定项目的,并且大家还可以随意组合和匹配这些策略。
逻辑实体分组
逻辑实体分组是根据它们所代表的项目的功能部分将资产分配给资产包的地方。这包括用户界面、字符、环境等部分,以及在应用程序整个生命周期中可能经常出现的任何其他部分。例如:根据UI打包所有的textures和布局数据;根据角色以及角色的设置打包所用的模型和动画;打包在多层次中用到的场景的纹理和模型。逻辑实体分组是可下载内容(DLC)的理想选择,因为通过这种方式分离所有内容,您可以对单个实体进行更改,而不需要下载附加的、未更改的资产。要正确实现此策略,最大的诀窍是开发人员必须准确地了解项目将在何时何地使用每个资产,并将资产分配给各自的捆绑包。
类型分组
对于此策略,您将将类似类型的资产(如音频轨道或语言本地化文件)分配给单个资产包。类型分组是构建多个平台使用的资产包的更好策略之一。例如,如果您的音频压缩设置在windows和Mac平台之间是相同的,则可以将所有音频数据打包到资产包中并重用这些包,而着色器则倾向于使用更多平台特定选项进行编译,因此您为Mac构建的着色器包可能不会在windows上被重用。此外,这种方法还可以使资产包与更统一的播放器版本兼容,因为纹理、压缩格式和设置的更改频率低于代码脚本或预制板。
并发内容分组
并发内容分组的思想是将资产捆绑在一起,这些资产将同时加载和使用。您可以将这些类型的包看作是用于基于级别的游戏,其中每个级别包含完全独特的角色、纹理、音乐等等,这些资产中的一个被使用,其他资产也同时被使用。在并发内容分组包中依赖单个资产将导致负载时间的显着增加,因为您将被迫为该单个资产下载整个包。并发内容分组包最常见的用例是基于场景的包。在这种分配策略中,每个场景包应该包含大部分或全部场景依赖项。
请注意,一个项目绝对可以并且应该根据您的需要混合这些策略。对于任何给定的场景,使用最优的资产分配策略可以大大提高任何项目的效率。例如,一个项目可能决定将其不同平台的用户界面(UI)元素组合到自己的特定于平台的UI包中,但按级别/场景分组其交互内容。
不管你选择使用哪种打包分配策略,这里有一些额外的建议供大家去借鉴:
- 将经常更新的对象拆分为资产包,与很少更改的对象分开。
- 将可能同时加载的对象分组。例如模型、纹理和动画。
- 如果您注意到跨多个资产包的多个对象依赖于完全不同的资产包中的单个资产,则将依赖项移动到一个单独的资产包中。如果多个资产束引用其他资产束中的同一组资产,则可能值得将这些依赖项拖到共享的资产包中以减少重复。
- 如果两组对象不太可能同时加载,例如标准和高清晰度资产,请确保它们位于自己的资产包中。
- 如果该包中的50%很少同时加载的话,考虑拆分一个资产包考虑合并小型资产包(少于5至10个资产),并且其内容经常同时加载。
- 如果一组对象只是同一对象的不同版本,请考虑资产包变体。