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

Posted jane-near

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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文件自身的内存镜像

 

以上是关于unity3d 资源加载与释放的内存管理的主要内容,如果未能解决你的问题,请参考以下文章

Unity资源加载与释放

Lua模块的加载与内存释放

Unity3D资源异步加载——AssetBundle资源打包加载

unity3D中动态加载物体的常用的方法

Unity3D资源异步加载——Addressables资源异步加载

Unity3D资源异步加载——图片音视频资源加载