最近我们项目快上线了,把项目提交到了一个专业做Unity项目优化的网站。——uwa
他们号称没有不存在资源冗余的项目,我们提交以后确实发现了一些冗余资源。但是他们网站有2个缺陷:-
免费用户一个月只能检测2次
不自由
付费用户6600/季度
-
需要上传自己项目的所有AB文件
不安全
而且,我仔细想了下,这里面的技术其实不是很复杂。就衍生了一个自己写一个小插件的想法,然后ABRedundancyChecker就诞生了。
一、插件介绍
-
我把AB包所有的资源分为两类
本包资源
依赖包资源
该插件把每个AB包的本包资源都列举出来,然后统计这些资源是否有重复,重复则为冗余。
插件github仓库地址:
喜欢的赏颗星星
二、ABRedundancyChecker使用方法
1. 修改脚本参数
把以下参数改成自己想要的:
////// AB文件名匹配规则/// public string searchPattern = "*.ab";////// 冗余资源类型白名单/// public ListassetTypeList = 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. 开始使用
将
ABRedundancyChecker.cs
放在Unity项目的Editor目录下将所有打包好的AssetBundle文件放在
abPath
目录下点击菜单栏
AB冗余检测
->AB检测
-
喝一杯茶
250MB的AB文件(1600个文件)检测时间为2分钟
打开输出到目标目录的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 |