导语 游戏开发中Unity项目的资源大部分都是以AssetBundle的形式打到包里,并在运行时动态加载。 不同的打包方式和策略对游戏的内存,资源加载时间等都会有不同影响。 本文提供一种思路对游戏的打包策略进行分析,并提供常见的优化思路。
现有的工具
目前可以用于分析打包效果的工具主要有两个:
AssetBundleBrowser,基于Unity Editor的插件,
主要功能:
可以展示AB包含的资源信息,size,AB之间依赖关系,没有冗余信息
工具展示的信息较少,无法帮助我们衡量打包策略的优劣
AssetBundleBrowser实现原理
AssetBundleBrowser 是 Unity 提供的一个工具,用于管理和打包 Asset Bundles。它提供了一个图形用户界面,方便开发者查看、配置和打包 Asset Bundles。AssetBundleBrowser 获取打包信息的过程大致如下:
-
扫描项目资源:
AssetBundleBrowser会扫描 Unity 项目中的所有资源文件(Assets),包括场景、模型、纹理、音频、脚本等。- 它会读取每个资源文件的元数据(.meta 文件),这些元数据包含了资源的 Asset Bundle 标签信息。
-
读取 Asset Bundle 标签:
- 每个资源文件的 .meta 文件中包含一个
assetBundleName字段,该字段指定了该资源所属的 Asset Bundle 名称。 AssetBundleBrowser会读取这些标签信息,并将资源按照 Asset Bundle 名称进行分类。
- 每个资源文件的 .meta 文件中包含一个
-
构建资源依赖关系:
AssetBundleBrowser会分析资源之间的依赖关系,确定哪些资源需要一起打包。- 例如,一个场景文件可能依赖多个模型和纹理文件,这些依赖关系需要在打包时一并考虑。
-
显示打包信息:
AssetBundleBrowser会在其图形用户界面中显示所有的 Asset Bundle 及其包含的资源。- 开发者可以在界面中查看每个 Asset Bundle 的详细信息,包括资源列表、依赖关系等。
-
配置和修改 Asset Bundle:
- 开发者可以使用
AssetBundleBrowser界面来配置和修改 Asset Bundle 标签。 - 可以通过拖放操作将资源分配到不同的 Asset Bundle,或者直接修改资源的 Asset Bundle 标签。
- 开发者可以使用
-
生成打包配置:
AssetBundleBrowser会根据当前的配置生成打包配置文件,这些配置文件用于实际的 Asset Bundle 打包过程。- 配置文件中包含了每个 Asset Bundle 的名称、包含的资源列表、依赖关系等信息。
-
执行打包:
- 开发者可以在
AssetBundleBrowser界面中点击打包按钮,启动 Asset Bundle 的打包过程。 - Unity 会根据生成的打包配置文件,使用
BuildPipeline.BuildAssetBundles方法来实际打包 Asset Bundles。
- 开发者可以在
-
输出打包结果:
- 打包完成后,
AssetBundleBrowser会显示打包结果,包括每个 Asset Bundle 的大小、包含的资源等信息。 - 打包生成的 Asset Bundles 会输出到指定的目录,供游戏运行时加载使用。
- 打包完成后,
通过上述步骤,AssetBundleBrowser 可以有效地管理和打包 Unity 项目中的资源,帮助开发者优化资源加载和内存使用。
UWA资源分析,UWA网站的一个资源分析服务
主要功能:
展示AB打包的信息
展示AB的依赖关系
列出冗余资源
由于需要上传游戏的AssetBundle资源文件,存在资源泄漏的风险,所以公司内部不方便使用的
新工具
基于上述工具的问题无法让我们公司项目使用,因此自己实现一个。
原理
通过解析Editor.log和Manifest文件获取打包信息
打包信息
解析Unity打包生成的Editor日志,获取AssetBundle打包信息Unity打包后生成的Editor日志,包含了详细的AssetBundle信息,这些信息可以帮助我们分析打包效果
解析manifest文件,获取AssetBundle依赖关系
需要具备的主要功能
查看资源打包信息
概要信息:AB数量,AB压缩前后的大小,总冗余大小,冗余率
详细信息:每个AB包含的资源列表,AB之间依赖关系,资源冗余的情况
作用
资源的打包信息,可以帮助我们详细了解资源打包结构和资源的变化趋势,把原本黑盒的信息透明化。
每个AB的内存大小,快速定位内存占用异常的AB
依赖的AB数量
说明:AB之间一般会存在依赖关系,1个AB可能会依赖1个或多个AB
7万+

被折叠的 条评论
为什么被折叠?



