zoukankan      html  css  js  c++  java
  • [Unity资源打包加载管理]

    《1》ab的打包5.X以上打包ab已经很方便了,打包方案:贴图,大图单独打包成一个ab,材质单独打,shader单独打,动画文件单独打,预设单独打,一个图集(1024*1024大小)打包成一个ab

    《2》ab的加载与管理

    1:ResMgr 游戏上层调用
           member:
                       getObj(name,objType,callBack<string,bool,obj>);//获取gameObject objType=池子类型
                       desObj(obj);//销毁gameObject

    2:PoolMgr 管理所有对象池
           member:
                       Dict<string,BasePool> pools;//所有池子

                      getObj(name,poolType,callBack);//获取gameObject poolType=池子生命周期类型 时间池,管卡池,全局池
                       desObj(obj);//回收gameObject

    3:BasePool 管理所有gameobject 派生modelPool,uipool...
           member:
                        string name;//池子名称
                        GameObjct tempObj;//模版obj
                        E_PoolType pType;//池子生命周期类型
                        List<GameObjct> objLst;//缓存obj
                        List<callBack> loadHandler;//加载回调
                        List<string> depends;//依赖关系

                       getObj(callBack);//没有模版 添加一个LoaderTask,有模版 缓存lst>0 从缓存lst取 lst==0 用模版实例化,加载中有其他地方取obj,添加handler回调
                       saveObj(poolObj);//回收一个obj 没有挂载PoolObj的不会进入池子 在poolMgr层直接销毁

    4:LoaderMgr 负责检测加载队列,进行加载
             member:
                      Dict<string,LoaderTask> tasks;//加载队列

                      addTask(name,callBack<string,bool,TBundle>);//添加一个加载任务 会获取所有依赖 先添加依赖bundle加载任务(递归把最深的依赖放到队列前面),如果有这个任务 加载LoaderTask.addhandler(callBack)
                      onTick();//遍历加载队列 上一个加载完毕 加载下一个

    5:LoaderTask 负责真实加载
             member:
                      addhandler(callBack<string,bool,TBundle>);//添加一个加载回调
                      IEnumerator load();//协程加载 如果AssetMgr.isHave()有bundle缓存 直接回调,如果没有则AssetBundle.LoadFromFileAsync做一个异步加载,加载完毕缓存到AssetMgr

    6:AssetMgr 管理AB
             member:
                      Dict<string, TBundle> bundlePool;//bundle列表

                      onTick();//检查ab上次使用时间 过期unload(bool) bool是否用引用计数
                      isHave();//是否包含
                      getBundle();//获取bundle
                       addBundle();//添加bundle
                      releaseRef();//减少refCount
                      addRef();//增加refCount
                      disposeBundle();//释放bundle
    7:TBundle 封装一次AB
              member:
                      AssetBundle ab;
                      RefCount count;

                      onDispose();

    Github:https://github.com/tianjiuwan/ECS_XLua

  • 相关阅读:
    微信小程序:动画(Animation)
    小程序滚动事件之头部渐隐渐现demo
    小程序tab栏可滑动,可点击居中demo
    ES7中前端异步特性:async、await。
    vue中生成二维码
    vue之vue-cookies
    echarts中boundaryGap属性
    ES6数组方法总结
    手写自己的ORM框架For SQlServer(简单的CURD)
    Sqlsever新增作业执行计划傻瓜式操作
  • 原文地址:https://www.cnblogs.com/cocotang/p/8963344.html
Copyright © 2011-2022 走看看