Unity Asset ID、GUID資源索引問題

1. Unity文件、文件引用、Meta詳解

2. Unity資源機制

3. Unity隱藏的資源引用坑

 

GUID與fileID(本地ID)

        Unity會爲每個導入到Assets目錄中的資源創建一個meta文件,文件中記錄了GUID,GUID用來記錄資源之間的引用關係。還有fileID(本地ID),用於標識資源內部的資源。資源間的依賴關係通過GUID來確定;資源內部的依賴關係使用fileID來確定。

InstanceID(實例ID)

        Unity爲了在運行時,提升資源管理的效率,會在內部維護一個緩存表,負責將文件的GUID與fileID轉換成爲整數數值,這個數值在本次會話中是唯一的,稱作實例ID(InstanceID)。

        程序啓動時,實例ID緩存與所有工程內建的對象(例如在場景中被引用),以及Resource文件夾下的所有對象,都會被一起初始化。如果在運行時導入了新的資源,或從AssetBundle中載入了新的對象,緩存會被更新,併爲這些對象添加相應條目。實例ID僅在失效時纔會被從緩存中移除,當提供了指定文件GUID和fileID的AssetBundle被卸載時會產生移除操作。

        卸載AssetBundle會使實例ID失效,實例ID與其文件GUID和fileID之間的映射會被刪除以便節省內存。重新載入AssetBundle後,載入的每個對象都會獲得新的實例ID。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章