最近我們項(xiàng)目快上線了,把項(xiàng)目提交到了一個(gè)專業(yè)做Unity項(xiàng)目?jī)?yōu)化的網(wǎng)站?!?a target="_blank" rel="nofollow">uwa
他們號(hào)稱沒有不存在資源冗余的項(xiàng)目,我們提交以后確實(shí)發(fā)現(xiàn)了一些冗余資源。但是他們網(wǎng)站有2個(gè)缺陷:
- 免費(fèi)用戶一個(gè)月只能檢測(cè)2次
- 不自由
- 付費(fèi)用戶6600/季度
- 需要上傳自己項(xiàng)目的所有AB文件
- 不安全
而且,我仔細(xì)想了下,這里面的技術(shù)其實(shí)不是很復(fù)雜。就衍生了一個(gè)自己寫一個(gè)小插件的想法,然后ABRedundancyChecker就誕生了。
一、插件介紹
- 我把AB包所有的資源分為兩類
- 本包資源
- 依賴包資源
- 該插件把每個(gè)AB包的本包資源都列舉出來,然后統(tǒng)計(jì)這些資源是否有重復(fù),重復(fù)則為冗余。
- 插件github倉(cāng)庫(kù)地址:https://github.com/inkiu0/ABRedundancyChecker
- 喜歡的賞顆星星
二、ABRedundancyChecker使用方法
1. 修改腳本參數(shù)
- 把以下參數(shù)改成自己想要的:
/// <summary>
/// AB文件名匹配規(guī)則
/// </summary>
public string searchPattern = "*.ab";
/// <summary>
/// 冗余資源類型白名單
/// </summary>
public List<Type> assetTypeList = new List<Type> { typeof(Material), typeof(Texture2D), typeof(AnimationClip),
typeof(AudioClip), typeof(Sprite), typeof(Shader), typeof(Font), typeof(Mesh) };
/// <summary>
/// 輸出路徑
/// </summary>
public string outPath = Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory);
/// <summary>
/// AB文件存放路徑,會(huì)從這個(gè)文件夾下遞歸查找符合查找規(guī)則searchPattern的文件。
/// </summary>
public string abPath = "Assets/StreamingAssets";
[MenuItem("AB冗余檢測(cè)/AB檢測(cè)")]
2. 開始使用
- 將
ABRedundancyChecker.cs放在Unity項(xiàng)目的Editor目錄下 - 將所有打包好的AssetBundle文件放在
abPath目錄下 - 點(diǎn)擊菜單欄
AB冗余檢測(cè)->AB檢測(cè) - 喝一杯茶
- 250MB的AB文件(1600個(gè)文件)檢測(cè)時(shí)間為2分鐘
- 打開輸出到目標(biāo)目錄的MarkDown文件
3. 輸出的MarkDown形如
| 資源名稱 | 資源類型 | 數(shù)量 | 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
|