Unity资源打包工具优化方案

导语 游戏开发中Unity项目的资源大部分都是以AssetBundle的形式打到包里,并在运行时动态加载。 不同的打包方式和策略对游戏的内存,资源加载时间等都会有不同影响。 本文提供一种思路对游戏的打包策略进行分析,并提供常见的优化思路。

现有的工具

目前可以用于分析打包效果的工具主要有两个:

AssetBundleBrowser,基于Unity Editor的插件,
主要功能:
可以展示AB包含的资源信息,size,AB之间依赖关系,没有冗余信息
工具展示的信息较少,无法帮助我们衡量打包策略的优劣

AssetBundleBrowser实现原理

AssetBundleBrowser 是 Unity 提供的一个工具,用于管理和打包 Asset Bundles。它提供了一个图形用户界面,方便开发者查看、配置和打包 Asset Bundles。AssetBundleBrowser 获取打包信息的过程大致如下:

  1. 扫描项目资源

    • AssetBundleBrowser 会扫描 Unity 项目中的所有资源文件(Assets),包括场景、模型、纹理、音频、脚本等。
    • 它会读取每个资源文件的元数据(.meta 文件),这些元数据包含了资源的 Asset Bundle 标签信息。
  2. 读取 Asset Bundle 标签

    • 每个资源文件的 .meta 文件中包含一个 assetBundleName 字段,该字段指定了该资源所属的 Asset Bundle 名称。
    • AssetBundleBrowser 会读取这些标签信息,并将资源按照 Asset Bundle 名称进行分类。
  3. 构建资源依赖关系

    • AssetBundleBrowser 会分析资源之间的依赖关系,确定哪些资源需要一起打包。
    • 例如,一个场景文件可能依赖多个模型和纹理文件,这些依赖关系需要在打包时一并考虑。
  4. 显示打包信息

    • AssetBundleBrowser 会在其图形用户界面中显示所有的 Asset Bundle 及其包含的资源。
    • 开发者可以在界面中查看每个 Asset Bundle 的详细信息,包括资源列表、依赖关系等。
  5. 配置和修改 Asset Bundle

    • 开发者可以使用 AssetBundleBrowser 界面来配置和修改 Asset Bundle 标签。
    • 可以通过拖放操作将资源分配到不同的 Asset Bundle,或者直接修改资源的 Asset Bundle 标签。
  6. 生成打包配置

    • AssetBundleBrowser 会根据当前的配置生成打包配置文件,这些配置文件用于实际的 Asset Bundle 打包过程。
    • 配置文件中包含了每个 Asset Bundle 的名称、包含的资源列表、依赖关系等信息。
  7. 执行打包

    • 开发者可以在 AssetBundleBrowser 界面中点击打包按钮,启动 Asset Bundle 的打包过程。
    • Unity 会根据生成的打包配置文件,使用 BuildPipeline.BuildAssetBundles 方法来实际打包 Asset Bundles。
  8. 输出打包结果

    • 打包完成后,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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

你一身傲骨怎能输

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值