1. 程式人生 > >unity3d 資源加載與釋放的內存管理

unity3d 資源加載與釋放的內存管理

sset TE 引用 anti 不想 包括 內存管理 管理 清除

unity3d 在動態創建實例的過程中有三個步驟

AssetBundle.LoadFromFile 創建的是AssetBundle文件內存鏡像 bundle

bundle.LoadAsset 創建的是asset內存鏡像 asset

Instantiate(asset) 創建出實例對象 gameobject

所以就對應這三個生成物體的生成與釋放

gameobject

  Instantiate(asset) 生成 gameobject

  Destroy(gameobject) 銷毀 gameobject

asset

  bundle.LoadAsset 創建asset內存鏡像

  Reources.UnloadAsset(asset) 釋放asset內存鏡像

  Resources.UnloadUnusedAssets() 釋放沒有引用的asset

  (策略,不想釋放的asset,保持asset的引用,調用UnloadUnusedAssets來統一釋放想釋放的asset)

bundle

  AssetBundle.LoadFromFile 創建bundle文件內存鏡像

  bundle.Unload(false) 釋放bundle文件內存鏡像

  (在創建完成所有asset之後,調用bundle.Unload(false))

場景切換會銷毀所有gameobject,清除asset內存鏡像的引用,但是不包括AssetBundle文件自身的內存鏡像

unity3d 資源加載與釋放的內存管理