unity3d 资源加载与释放的内存管理

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文件自身的内存镜像

猜你喜欢

转载自www.cnblogs.com/jane-near/p/9239214.html