LuaFramework内存资源管理器ResourceManger详解及切换场景资源清理

1.成员变量

m_BaseDownloadingURL : 获取资源的地方,加载AssetBundle包的时候会用到

m_AssetBundleManifest : 包间依赖关系文件,从这个类中的信息中可以知道某个包依赖的包有哪些,如果依赖的包还没加载进去则先加载依赖包

m_Dependencies : 如上,一个包名对应多个依赖包名

m_LoadedAssetBundles :已经加载入内存的AssetBundle包,一个包名对应一个AssetBundle(AssetBundleInfo包了一层)

m_LoadRequests : 当前正在处理的“从AssetBundle包中解压Asset资源(纹理,材质,预设等)”的请求,一个包名对应多个Asset资源名

 

2.重要调用堆栈

ResourceManager初始化

GameManager.Init->CheckExtractResource->OnUpdateResource->OnResourceInited->ResourceManager.Initiallize

加载AssetBundle包并把指定的Asset资源从包中解压出来,一般都是通过LoadPrefb调用,把预设从包中解压出来,则会同时把预设引用的资源(例如mesh,材质,纹理等)解压出来。一般情况下,在使用某个预设去Initialize出一个克隆体之前,会加载这个预设资源。加载预设资源需要一定时间,所以对于一些较大的资源,也可以在loading的时候全部加载出来,不过这样内存占用就比较大了,即所谓用空间换时间。

ResourceManager.LoadPrefb-》LoadAsset

 

3.主要函数

LoadAsset

OnLoadAssetBundle

OnLoadAsset

4.加载资源过程中内存占用

http://www.cnblogs.com/U-tansuo/archive/2013/04/02/unity3d_memory_optimization.html

5.切换场景资源清理

由于LoadLevel调用的时候仅把“1.实例化的gameobject 2.prefabs 3.通过AssestBundle.LoadAsset(prefabs)自动加载进来的asset”删除了,而ab包没管,所以需要清理一下ab包以减少内存的占用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值