2. 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。