zoukankan      html  css  js  c++  java
  • 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.加载资源过程中内存占用
     
    5.切换场景资源清理
    由于LoadLevel调用的时候仅把“1.实例化的gameobject 2.prefabs 3.通过AssestBundle.LoadAsset(prefabs)自动加载进来的asset”删除了,而ab包没管,所以需要清理一下ab包以减少内存的占用
     
  • 相关阅读:
    【BZOJ3166】ALO(主席树)
    【UOJ#188】Sanrd(min_25筛)
    伯努利数
    【51Nod1258】序列求和V4(FFT)
    【BZOJ5306】[HAOI2018]染色(NTT)
    【BZOJ4943】【NOI2017】蚯蚓排队(哈希)
    【BZOJ4912】天才黑客(最短路,虚树)
    【BZOJ5333】荣誉称号(动态规划)
    NOI2018前的每日记录
    【BZOJ1088】扫雷(递推)
  • 原文地址:https://www.cnblogs.com/VariousCloudShadow/p/7201059.html
Copyright © 2011-2022 走看看