1. 程式人生 > >Unity 資源斷舍離(資源清理重複以及引用被引用查詢)

Unity 資源斷舍離(資源清理重複以及引用被引用查詢)

原因

在遊戲製作過程,隨著資源越來越多,可能存在重複的資源,也需要刪除不被使用的資源,但是如果使用 Unity 的 API 去查詢引用關係將會很耗時間,另外,資源都是對應使用的,比如 UI 圖片只在 UI 介面上進行引用,所以不需要去查詢其他地方是否引用到。

目標

實現可以自定義類別的資源清理,也可以檢視資源的引用情況。

說明

為了可以快速瞭解 Unity 的資源使用情況,那麼就需要使用多執行緒來進行資原始檔分析。然而,Unity 的資產引用會記錄在預製體或場景上,需要將序列化方式改成文字,才能採用檔案解析的方式來搜尋匹配資源的 GUID 資訊。資源是否存在重複,根據檔案流的 MD5 值來判斷。

多執行緒的查詢 GUID,參考文章《Unity 編輯器下多執行緒處理檔案》。

原始碼

地址:https://github.com/akof1314/UnityAssetDanshari

使用說明

① 第一次使用時,按資源的使用環境進行分組

將路徑拖到目錄框,可以路徑多選後再拖入。其中【公共資源目錄】是用來放公共資源的路徑,比如 UI 圖片資源存在被多個介面引用的時候,可以快捷操作移動資源到公共目錄。
② 【引用查詢】功能,是對【引用目錄】下的每個資源進行檢查是否引用到了【資源目錄】下的資源,比如 UI 介面預製引用 UI 圖片

雙擊項,可以自動在【Project】視窗定位到資源。
③ 【檢查重複

】功能,是對資原始檔進行 MD5 檢查重複,再對重複的資源進行操作

資源被引用查詢】選單項功能,是在【被引用查詢】窗口裡定位到此資源的使用情況,方便進行決定保留還是刪除,注意,需要先打開了【被引用查詢】窗口才可以定位到。
僅使用此資源,其餘刪除】選單項功能,將會刪除其餘重複的資源,並且將所有引用到這些刪除資源的地方都改成引用保留的那一個。
當美術對同一資源進行切圖兩次,會導致檔案 MD5 值不一樣,就無法被工具所檢測到。出現這種情況的時候,肉眼發現到兩個資源其實是一樣的,可以在這個視窗右上角點選【手動新增】按鈕

手動進行新增資源路徑,將資原始檔拖動到文字框,再點選【確定】。就會自動定位到新增的資料,接著就可以按處理重複資源一樣進行操作。
④【被引用查詢

】功能,是對【資源目錄】下的每個資源進行分析,看是否被【引用目錄】下的資源進行引用,比如 UI 圖片被哪些 UI 介面進行引用

刪除選中資源】選單項功能,是直接對資源進行刪除,當發現沒有被使用到時,可以這樣快捷刪除資源。
右上角【過濾為空】按鈕,可以過濾顯示沒有被使用的資源,方便快速檢視。