AssetBundle冗余资源检测器

最近我们项目快上线了,把项目提交到了一个专业做Unity项目优化的网站。——uwa
他们号称没有不存在资源冗余的项目,我们提交以后确实发现了一些冗余资源。但是他们网站有2个缺陷:

  • 免费用户一个月只能检测2次

    • 不自由

    • 付费用户6600/季度

  • 需要上传自己项目的所有AB文件

    • 不安全

而且,我仔细想了下,这里面的技术其实不是很复杂。就衍生了一个自己写一个小插件的想法,然后ABRedundancyChecker就诞生了。

一、插件介绍

  1. 我把AB包所有的资源分为两类

    • 本包资源

    • 依赖包资源

  2. 该插件把每个AB包的本包资源都列举出来,然后统计这些资源是否有重复,重复则为冗余。

  3. 插件github仓库地址:https://github.com/inkiu0/ABR...

  4. 喜欢的赏颗星星

二、ABRedundancyChecker使用方法

1. 修改脚本参数

  1. 把以下参数改成自己想要的:

/// 
/// AB文件名匹配规则
/// 
public string searchPattern = "*.ab";
/// 
/// 冗余资源类型白名单
/// 
public List assetTypeList = new List { typeof(Material), typeof(Texture2D), typeof(AnimationClip),   
typeof(AudioClip), typeof(Sprite), typeof(Shader), typeof(Font), typeof(Mesh) };
/// 
/// 输出路径
/// 
public string outPath = Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory);
/// 
/// AB文件存放路径,会从这个文件夹下递归查找符合查找规则searchPattern的文件。
/// 
public string abPath = "Assets/StreamingAssets";  
[MenuItem("AB冗余检测/AB检测")]

2. 开始使用

  1. ABRedundancyChecker.cs放在Unity项目的Editor目录下

  2. 将所有打包好的AssetBundle文件放在abPath目录下

  3. 点击菜单栏AB冗余检测->AB检测

  4. 喝一杯茶

    • 250MB的AB文件(1600个文件)检测时间为2分钟

  5. 打开输出到目标目录的MarkDown文件

3. 输出的MarkDown形如

资源名称 资源类型 数量 AB文件名
smoke_01 Texture2D 14 art_11_1.ab art_13_103.ab art_13_104.ab art_13_107.ab art_13_109.ab art_13_131.ab art_13_132.ab art_13_31.ab art_13_63.ab art_13_77.ab art_13_81.ab art_13_87.ab art_2_128.ab art_4_1.ab
wuti_07 Texture2D 12 art_11_1.ab art_12_4.ab art_13_102.ab art_13_116.ab art_13_142.ab art_13_17.ab art_13_22.ab art_13_31.ab art_13_59.ab art_13_61.ab art_13_73.ab art_4_1.ab

你可能感兴趣的:(unity,unity3d)