【博物納新】是UWA旨在爲開發者推薦新穎、易用、有趣的開源項目,幫助大家在項目研發之餘發現世界上的熱門項目、前沿技術或者令人驚歎的視覺效果,並探索將其應用到自己項目的可行性。很多時候,我們並不知道自己想要什麼,直到某一天我們遇到了它。

更多精彩內容請關注:lab.uwa4d.com


導讀

在UWA開源庫中,有各種各樣的實用工具可供大家選擇。今天給大家介紹的是Unity引用查找工具,也是在研發過程中非常實用的小工具。

開源庫鏈接:https://lab.uwa4d.com/lab/5ccea58f72745c25a817c300

一、使用介紹

把這個庫下載下來,它的主體代碼只有三個腳本,包括了引用查找、界面展示等邏輯。需要使用時,只要把這個文件夾放進工程裏即可。

Unity引用查找工具開源庫

將ReferenceFinder文件夾放進了一個Demo工程中,這個工程中總共包含300多個資源和文件夾,是一個比較簡單的工程。

我們知道Unity自帶的關於引用查找的工具有兩個,分別是Find References In Scene和Select Dependencies。

Unity引用查找工具開源庫

但是這兩個功能有兩個缺點:

1、沒有GUI可以直觀地看到引用依賴的資源結果;

2、查找引用的對象只能針對於當前場景中的GameObject,不適用於Prefab等資源。

本文介紹的查找引用工具就可以實現這兩個功能。

在工程中選擇一個資源,右鍵菜單選擇最後一項“Find References”。

Unity引用查找工具開源庫

就可以在Ref Finder界面中查看該資源的引用和依賴資源了。這裏呈現引用關係是以樹狀結構呈現的,不僅能看到引用資源,還能看到這些資源之間的引用關係,非常直觀。每個資源包含資源類型、資源名、資源路徑、狀態等信息。

Unity引用查找工具開源庫

點擊Model按鈕可以切換查看引用/依賴模式,Expand/Collapse可以快速展開/摺疊樹狀結構:

Unity引用查找工具開源庫

雙擊列表中的資源,即可以在Project視圖中定位到這一資源。

Unity引用查找工具開源庫

點擊左側的Refresh Data可以刷新依賴引用關係的數據。注意需要在修改數據之後先保存一下工程,否則可能不生效。


二、原理簡述

這個小工具主要包含三個腳本:

ReferenceFinderData:引用數據生成、緩存、更新的相關邏輯。

ReferenceFinderView:定義了Editor界面UI的打開邏輯及主要GUI代碼。

AssetTreeView:定義了Editor界面中根據引用數據生成的資源樹狀結構及資源的雙擊響應事件。

本工具的作者在介紹中也寫到,對於這類引用關係的做法,無外乎兩種:

1、每次都進行一次全局查找,保證查找的正確性。

2、緩存一次全局查找的數據,在資源變動時更新緩存數據,保持查找的正確性。

由於一次全局查找使用的資源依賴接口GetDependencies本質上是guid也就是文本的查找和比較,所以通常會很慢,尤其是對於研發後期甚至上線後的項目,項目的資源量都很大,Prefab資源也很多,就會使全局查找的時間成倍數增加。對於大型項目這個過程可能會在10分鐘以上。如果希望在資源管理中,檢查多個資源的依賴關係,第一種方式顯然是無法接受的。

第二種方式,全局查找一次之後,就可以使用緩存數據查看所有資源的依賴關係了。同時對每個資源記錄 AssetDatabase.GetAssetDependencyHash 的哈希值作爲最後一次資源修改的時間標記。如果有資源修改了,通過比對這個哈希值來做增量數據更新,就可以減少數據更新的速度了。在修改資源不多的情況下,更新數據的時間也不會很長。

因此在這個工具中使用的是第二種方式,在測試過程中,確實更新數據的操作是非常快的。

緩存數據默認保存在 Library/ReferenceFinderCache 路徑下,大家也可以在ReferenceFinderData中修改保存路徑。對於使用SVN等工具的團隊需要注意緩存文件的提交。


三、總結

今天給大家介紹的是一個研發中的實用小工具——Unity引用查找工具。在UWA開源庫中其實有很多類似的小工具,這個是我們目前看到的,不管在易用性、界面美觀、還是效率上都有一定優勢的一個小工具,在此推薦給大家。

快用UWA Lab合輯Mark好項目!

Unity引用查找工具開源庫

今天的推薦就到這兒啦,或者它可直接使用,或者它需要您的潤色,或者它啓發了您的思路......

請不要吝嗇您的點贊和轉發,讓我們知道我們在做對的事。當然如果您可以留言給出寶貴的意見,我們會越做越好。

相關文章