unity引用查找插件-ReferenceFinder


簡介

  這是一個用來查找資源引用和依賴的插件,通過緩存來保存資源間的引用信息,通過樹狀結構直觀的展示。
  由於是通過緩存進行實現的,所以在希望的到精確的引用信息時需要刷新緩存。不過由於緩存的存在,在資源改動較少的情況下,刷新速度較快,對使用影響較小。
  直接將文件夾拖到項目中即可使用。

使用示例

  右鍵需要查找引用的文件或文件夾,點擊Find References進行查找。

按鈕含義:
Refresh Data:刷新緩存
Model:切換引用和依賴
NeedUpdateState:是否需要根據當前文件的狀態更新State欄。
Expand:展開列表
Collapse:折疊列表


  第三列的State為Changed代表這個資源被修改了,Missing代表資源被刪除了,No Data代表緩存中沒有該資源的信息。

實現方案

方案選擇

  1.在每次需要查找時進行一次全局查找,保證查找的正確性。但是進行全局查找會很慢,因為查找資源依賴信息的接口GetDependencies本質上其實是對文本的查找(比如prefab中會以文本的形式記錄prefab所引用資源的guiid和fileid),在不進行多線程查詢優化的情況下這是一個很慢的過程,存儲在機械硬盤上時會更慢。
  2.進行一次全局查找生成緩存,在進行查找時直接讀取緩存(在資源改動時會出現引用信息不准確的問題),在資源變動時需要更新緩存,保持查找的正確性,不過由於緩存的存在,在資源沒有太大的改動的情況下,刷新速度較快。

  這里選擇了方案二。

查找及緩存

引用信息的生成:
  通過AssetDatabase.GetAllAssetPaths()獲取項目中所有的資源路徑。
  通過AssetDatabase.GetDependencies()獲取每一個資源所依賴資源的信息。
  經過這兩步之后就有了所有資源的依賴信息了。
  通過資源的依賴信息,我們就可以生成所有資源的引用信息了。
緩存:
  為了讓緩存盡量的小,所以緩存只保存每個資源的guid、引用資源哈希值、依賴資源的信息。
  其中引用資源哈希值時用於判斷這個資源依賴的資源是否有修改,若有修改,則在刷新資源引用信息的時候需要重新讀取這個資源的依賴信息,否則繼續使用該信息。這個判斷就是在資源改動較少時減少刷新時間的關鍵。
  在記錄依賴時,沒有直接記錄依賴資源的guid,而是記錄了資源在緩存中下標的位置,從而進一步縮小緩存的大小。

界面實現

  主要使用了Unity自帶的TreeView實現樹形界面的展示。

項目鏈接:Reference Finder


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM