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

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM