Пример #1
0
        // 加载图像
        public void loadImage(LoadParam param)
        {
            if (!m_path2ResDic.ContainsKey(param.m_path))
            {
                // 保存加载事件处理,因为这个时候资源还没有加载,这次调用仅仅是想加载 AtlasScriptRes ,不想直接回调事件处理函数
                Action<IDispatchObject> tmpLoadEventHandle = param.m_loadEventHandle;
                param.m_loadEventHandle = null;

                AtlasScriptRes atlasRes = createResItem<AtlasScriptRes>(param);

                param.m_loadEventHandle = tmpLoadEventHandle;
                tmpLoadEventHandle = null;

                atlasRes.loadImage(param);

                tmpLoadEventHandle = param.m_loadEventHandle;
                param.m_loadEventHandle = null;

                param.m_loadInsRes = atlasRes;
                load<AtlasScriptRes>(param);
            }
            else
            {
                (m_path2ResDic[param.m_path] as AtlasScriptRes).loadImage(param);
            }
        }
Пример #2
0
        // eBundleType 打包类型资源加载
        public void loadBundle(LoadParam param)
        {
            param.m_resPackType = ResPackType.eBundleType;
            param.m_resLoadType = Ctx.m_instance.m_cfg.m_resLoadType;

            load(param);
        }
Пример #3
0
        public void loadImage(LoadParam param)
        {
            ImageItem retImage = null;

            if (!m_path2Image.ContainsKey(param.m_subPath))
            {
                retImage       = createImage(param.m_subPath, refCountResLoadResultNotify.resLoadState);
                retImage.image = getSprite(param.m_subPath);
            }
            else
            {
                retImage = m_path2Image[param.m_subPath];
            }
            retImage.refCountResLoadResultNotify.resLoadState.setLoading();
            retImage.refCountResLoadResultNotify.refCount.incRef();

            if (refCountResLoadResultNotify.resLoadState.hasLoaded())
            {
                if (param.m_loadEventHandle != null)
                {
                    param.m_loadEventHandle(retImage);
                }
            }
            else if (refCountResLoadResultNotify.resLoadState.hasNotLoadOrLoading())
            {
                if (param.m_loadEventHandle != null)
                {
                    retImage.refCountResLoadResultNotify.loadResEventDispatch.addEventHandle(param.m_loadEventHandle);
                }
            }
        }
Пример #4
0
        // 加载版本文件
        public void loadVerFile(string ver = "")
        {
            LoadParam param = Ctx.m_instance.m_poolSys.newObject <LoadParam>();

            param.m_path = FILENAME;

            if (FilesVerType.eStreamingAssetsVer == m_type)
            {
                param.m_resLoadType = ResLoadType.eStreamingAssets;
            }
            else if (FilesVerType.ePersistentDataVer == m_type)
            {
                param.m_resLoadType = ResLoadType.ePersistentData;
                param.m_version     = ver;
            }
            else if (FilesVerType.eWebVer == m_type)
            {
                param.m_resLoadType = ResLoadType.eLoadWeb;
                param.m_version     = ver;
            }

            param.m_loadEventHandle = onLoadEventHandle;

            Ctx.m_instance.m_resLoadMgr.loadData(param);
            Ctx.m_instance.m_poolSys.deleteObj(param);
        }
Пример #5
0
 protected void loadWithResCreatedAndNotLoad <T>(LoadParam param, T resItem) where T : InsResBase, new()
 {
     m_path2ResDic[param.m_path] = resItem;
     m_path2ResDic[param.m_path].refCountResLoadResultNotify.resLoadState.setLoading();
     param.m_loadEventHandle = onLoadEventHandle;
     Ctx.m_instance.m_resLoadMgr.loadResources(param);
 }
Пример #6
0
        // eBundleType 打包类型资源加载
        public void loadBundle(LoadParam param)
        {
            param.m_resPackType = ResPackType.eBundleType;
            param.m_resLoadType = Ctx.m_instance.m_cfg.m_resLoadType;

            load(param);
        }
Пример #7
0
        // 加载图像
        public void loadImage(LoadParam param)
        {
            if (!m_path2ResDic.ContainsKey(param.m_path))
            {
                // 保存加载事件处理,因为这个时候资源还没有加载,这次调用仅仅是想加载 AtlasScriptRes ,不想直接回调事件处理函数
                Action <IDispatchObject> tmpLoadEventHandle = param.m_loadEventHandle;
                param.m_loadEventHandle = null;

                AtlasScriptRes atlasRes = createResItem <AtlasScriptRes>(param);

                param.m_loadEventHandle = tmpLoadEventHandle;
                tmpLoadEventHandle      = null;

                atlasRes.loadImage(param);

                tmpLoadEventHandle      = param.m_loadEventHandle;
                param.m_loadEventHandle = null;

                param.m_loadInsRes = atlasRes;
                load <AtlasScriptRes>(param);
            }
            else
            {
                (m_path2ResDic[param.m_path] as AtlasScriptRes).loadImage(param);
            }
        }
Пример #8
0
        // eResourcesType 打包类型资源加载
        public void loadResources(LoadParam param)
        {
            param.resolvePath();

#if PKG_RES_LOAD
            if (param.m_path.IndexOf(PakSys.PAK_EXT) != -1)     // 如果加载的是打包文件
            {
                param.m_resPackType = ResPackType.ePakType;
            }
            else        // 加载的是非打包文件
            {
                param.m_resPackType = ResPackType.eUnPakType;
            }
            load(param);
#elif UnPKG_RES_LOAD
            // 判断资源所在的目录,是在 StreamingAssets 目录还是在 persistentData 目录下,目前由于没有完成,只能从 StreamingAssets 目录下加载
            param.m_resPackType = ResPackType.eUnPakType;
            param.m_resLoadType = ResLoadType.eStreamingAssets;
            return(load(param));
#else
            param.m_resPackType = ResPackType.eResourcesType;
            param.m_resLoadType = ResLoadType.eLoadResource;
            load(param);
#endif
        }
Пример #9
0
        virtual public void loadMiniVerFile(string ver = "")
        {
            LoadParam param = Ctx.m_instance.m_poolSys.newObject <LoadParam>();

            param.m_path = MINIFILENAME;

            if (FilesVerType.eStreamingAssetsVer == m_type)
            {
                param.m_resLoadType = ResLoadType.eStreamingAssets;
            }
            else if (FilesVerType.ePersistentDataVer == m_type)
            {
                param.m_resLoadType = ResLoadType.ePersistentData;
                param.m_version     = ver;
            }
            else if (FilesVerType.eWebVer == m_type)
            {
                param.m_resLoadType = ResLoadType.eLoadWeb;
                //param.m_version = UtilApi.Range(int.MinValue, int.MaxValue).ToString();
                param.m_version = ver;
            }

            param.m_loadEventHandle = onMiniLoadEventHandle;

            Ctx.m_instance.m_resLoadMgr.loadData(param);
            Ctx.m_instance.m_poolSys.deleteObj(param);
        }
Пример #10
0
        public void loadSceneCfg(string filename)
        {
            LoadParam param = Ctx.m_instance.m_poolSys.newObject <LoadParam>();

            param.m_path            = Ctx.m_instance.m_cfg.m_pathLst[(int)ResPathType.ePathSceneXml] + filename;
            param.m_loadEventHandle = onSceneCfgLoadded;
            Ctx.m_instance.m_resLoadMgr.loadBundle(param);
            Ctx.m_instance.m_poolSys.deleteObj(param);
        }
Пример #11
0
        virtual public void loadFile()
        {
            LoadParam param = Ctx.m_instance.m_poolSys.newObject <LoadParam>();

            LocalFileSys.modifyLoadParam(FILE_LIST, param);
            param.m_loadEventHandle = onLoadEventHandle;

            Ctx.m_instance.m_resLoadMgr.loadData(param);
            Ctx.m_instance.m_poolSys.deleteObj(param);
        }
Пример #12
0
        public T createResItem <T>(LoadParam param) where T : InsResBase, new()
        {
            T ret = new T();

            ret.refCountResLoadResultNotify.refCount.incRef();
            ret.m_path = param.m_path;

            ret.refCountResLoadResultNotify.loadResEventDispatch.addEventHandle(param.m_loadEventHandle);

            return(ret);
        }
Пример #13
0
        // 从本地磁盘或者网络加载资源
        protected void loadFromFile(string reaPath, Action <IDispatchObject> onLoadEventHandle)
        {
            LoadParam param = Ctx.m_instance.m_poolSys.newObject <LoadParam>();

            LocalFileSys.modifyLoadParam(reaPath, param);
            param.m_loadNeedCoroutine = false;
            param.m_resNeedCoroutine  = false;
            param.m_loadEventHandle   = onLoadEventHandle;
            Ctx.m_instance.m_uiPrefabMgr.load <UIPrefabRes>(param);
            Ctx.m_instance.m_poolSys.deleteObj(param);
        }
Пример #14
0
        public void loadFile()
        {
            string    name  = "forbidWords.txt";
            LoadParam param = Ctx.m_instance.m_poolSys.newObject <LoadParam>();

            LocalFileSys.modifyLoadParam(Path.Combine(Ctx.m_instance.m_cfg.m_pathLst[(int)ResPathType.ePathWord], name), param);
            param.m_loadEventHandle   = onLoadEventHandle;
            param.m_loadNeedCoroutine = false;
            param.m_resNeedCoroutine  = false;
            Ctx.m_instance.m_resLoadMgr.loadResources(param);
            Ctx.m_instance.m_poolSys.deleteObj(param);
        }
Пример #15
0
        public void loadSceneRes(string filename)
        {
            Ctx.m_instance.m_netDispList.bStopNetHandle = true;        // 加载场景需要停止处理消息,因为很多资源都要等到场景加载完成才初始化

            LoadParam param = Ctx.m_instance.m_poolSys.newObject <LoadParam>();

            LocalFileSys.modifyLoadParam(string.Format("{0}{1}", Ctx.m_instance.m_cfg.m_pathLst[(int)ResPathType.ePathScene], filename), param);
            param.m_loadEventHandle   = onSceneResLoadded;
            param.m_resNeedCoroutine  = true;
            param.m_loadNeedCoroutine = true;
            Ctx.m_instance.m_resLoadMgr.loadLevel(param);
            Ctx.m_instance.m_poolSys.deleteObj(param);
        }
Пример #16
0
        // 加载一个表
        public void loadOneTable(TableID tableID)
        {
            TableBase table = m_dicTable[tableID];

            LoadParam param = Ctx.m_instance.m_poolSys.newObject <LoadParam>();

            LocalFileSys.modifyLoadParam(Path.Combine(Ctx.m_instance.m_cfg.m_pathLst[(int)ResPathType.ePathTablePath], table.m_resName), param);
            param.m_loadEventHandle   = onLoadEventHandle;
            param.m_loadNeedCoroutine = false;
            param.m_resNeedCoroutine  = false;
            Ctx.m_instance.m_resLoadMgr.loadResources(param);
            Ctx.m_instance.m_poolSys.deleteObj(param);
        }
Пример #17
0
        public T getAndAsyncLoad <T>(string path, Action <IDispatchObject> handle) where T : InsResBase, new()
        {
            T         ret   = null;
            LoadParam param = Ctx.m_instance.m_poolSys.newObject <LoadParam>();

            LocalFileSys.modifyLoadParam(path, param);
            param.m_loadNeedCoroutine = true;
            param.m_resNeedCoroutine  = true;
            param.m_loadEventHandle   = handle;
            ret = getAndLoad <T>(param);
            Ctx.m_instance.m_poolSys.deleteObj(param);

            return(ret);
        }
Пример #18
0
 //<?xml version="1.0" encoding="utf-8"?>
 //<!-- type 就是一个功能 item 就是一项,顺序千万不要乱,否则都乱了  -->
 //<msg>
 //    <t>
 //        <i>数据结构</i>
 //    </t>
 //</msg>
 public void loadXml()
 {
     if (!m_isLoaded)
     {
         m_isLoaded = true;
         LoadParam param = Ctx.m_instance.m_poolSys.newObject <LoadParam>();
         param.m_loadNeedCoroutine = false;
         param.m_resNeedCoroutine  = false;
         LocalFileSys.modifyLoadParam(m_ID2FileName[m_langID].m_filePath, param);
         param.m_loadEventHandle = onLoadEventHandle;
         Ctx.m_instance.m_resLoadMgr.loadResources(param);
         Ctx.m_instance.m_poolSys.deleteObj(param);
     }
 }
Пример #19
0
        protected void loadCfg <T>(XmlCfgID id) where T : XmlCfgBase, new()
        {
            T item = new T();

            m_id2CfgDic[id] = item;

            LoadParam param = Ctx.m_instance.m_poolSys.newObject <LoadParam>();

            LocalFileSys.modifyLoadParam(item.m_path, param);
            param.m_loadEventHandle   = onLoadEventHandle;
            param.m_loadNeedCoroutine = false;
            param.m_resNeedCoroutine  = false;
            Ctx.m_instance.m_resLoadMgr.loadResources(param);
            Ctx.m_instance.m_poolSys.deleteObj(param);
        }
Пример #20
0
 // 加载游戏模块
 public void loadModule(ModuleID moduleID)
 {
     if (!m_type2ItemDic[moduleID].m_isLoaded)
     {
         // 初始化完成,开始加载自己的游戏场景
         LoadParam param = Ctx.m_instance.m_poolSys.newObject <LoadParam>();
         LocalFileSys.modifyLoadParam(m_type2ItemDic[moduleID].m_path, param);
         param.m_loadEventHandle = m_type2ItemDic[moduleID].m_loadEventHandle;
         Ctx.m_instance.m_resLoadMgr.loadResources(param);
         Ctx.m_instance.m_poolSys.deleteObj(param);
     }
     else
     {
         Ctx.m_instance.m_logSys.log("模块重复加载");
     }
 }
Пример #21
0
 protected void loadWithResCreatedAndLoad(LoadParam param)
 {
     m_path2ResDic[param.m_path].refCountResLoadResultNotify.refCount.incRef();
     if (m_path2ResDic[param.m_path].refCountResLoadResultNotify.resLoadState.hasLoaded())
     {
         if (param.m_loadEventHandle != null)
         {
             param.m_loadEventHandle(m_path2ResDic[param.m_path]);        // 直接通知上层完成加载
         }
     }
     else
     {
         if (param.m_loadEventHandle != null)
         {
             m_path2ResDic[param.m_path].refCountResLoadResultNotify.loadResEventDispatch.addEventHandle(param.m_loadEventHandle);
         }
     }
 }
Пример #22
0
        // eLevelType 打包类型资源加载,都用协程加载
        public void loadLevel(LoadParam param)
        {
            param.resolveLevel();

#if PKG_RES_LOAD
            param.m_resPackType = ResPackType.ePakLevelType;
            param.resolvePath();
            load(param);
#elif UnPKG_RES_LOAD
            param.m_resPackType = ResPackType.eUnPakLevelType;
            param.m_resLoadType = ResLoadType.eStreamingAssets;
            load(param);
#else
            param.m_resPackType = ResPackType.eLevelType;
            param.m_resLoadType = Ctx.m_instance.m_cfg.m_resLoadType;
            load(param);
#endif
        }
Пример #23
0
        protected void loadWithResCreatedAndNotLoad(LoadParam param, ResItem resItem)
        {
            m_LoadData.m_path2Res[param.m_path] = resItem;
            m_LoadData.m_path2Res[param.m_path].refCountResLoadResultNotify.resLoadState.setLoading();
            LoadItem loadItem = createLoadItem(param);

            if (m_curNum < m_maxParral)
            {
                m_LoadData.m_path2LDItem[param.m_path] = loadItem;
                m_LoadData.m_path2LDItem[param.m_path].load();
                ++m_curNum;
            }
            else
            {
                m_LoadData.m_willLDItem.Add(loadItem);
            }

            resetLoadParam(param);
        }
Пример #24
0
        public void play(SoundParam soundParam)
        {
            if (!soundParam.m_bLoop)
            {
                addTimer();
            }

            soundParam.m_path = Ctx.m_instance.m_pPakSys.getCurResPakPathByResPath(soundParam.m_path, null);

            if (m_path2SoundDic.ContainsKey(soundParam.m_path))      // 如果已经有了直接返回
            {
                if (!m_path2SoundDic[soundParam.m_path].bInCurState(SoundPlayState.eSS_Play))
                {
                    m_path2SoundDic[soundParam.m_path].Play();
                }
            }
            else
            {
                // 创建
                if (isPrefab(soundParam.m_path))
                {
                    m_path2SoundDic[soundParam.m_path] = new SoundPrefabItem();
                    m_path2SoundDic[soundParam.m_path].m_soundResType = SoundResType.eSRT_Prefab;
                }
                else
                {
                    m_path2SoundDic[soundParam.m_path] = new SoundClipItem();
                    m_path2SoundDic[soundParam.m_path].m_soundResType = SoundResType.eSRT_Clip;
                }
                m_audioList.Add(m_path2SoundDic[soundParam.m_path]);
                m_path2SoundDic[soundParam.m_path].initParam(soundParam);

                LoadParam param = Ctx.m_instance.m_poolSys.newObject <LoadParam>();
                param.m_path              = soundParam.m_path;
                param.m_loadEventHandle   = onLoadEventHandle;
                param.m_loadNeedCoroutine = false;
                param.m_resNeedCoroutine  = false;
                Ctx.m_instance.m_resLoadMgr.loadResources(param);
                Ctx.m_instance.m_poolSys.deleteObj(param);
            }
        }
Пример #25
0
        public static void modifyLoadParam(string resPath, LoadParam param)
        {
#if PKG_RES_LOAD
            param.m_origPath = resPath;             // 记录原始的资源名字

            string retPath = resPath;

            if ("Module/AutoUpdate.prefab" == resPath)       // 自动更新模块更新还没有实现
            {
                param.m_resLoadType = ResLoadType.eStreamingAssets;
            }
            else
            {
                // 获取包的名字
                if (Ctx.m_instance.m_pPakSys.path2PakDic.ContainsKey(resPath))
                {
                    retPath = Ctx.m_instance.m_pPakSys.path2PakDic[resPath].m_pakName;
                }

                if (param != null)
                {
                    Ctx.m_instance.m_localFileSys.getAbsPathByRelPath(ref retPath, ref param.m_resLoadType);
                }
                else
                {
                    ResLoadType tmp = ResLoadType.eStreamingAssets;
                    Ctx.m_instance.m_localFileSys.getAbsPathByRelPath(ref retPath, ref tmp);
                }
            }
            param.m_path    = retPath;
            param.m_pakPath = param.m_path;
#elif UnPKG_RES_LOAD
            if (param != null)
            {
                param.m_resLoadType = ResLoadType.eStreamingAssets;
            }
            param.m_path = resPath;
#else
            param.m_path = resPath;
#endif
        }
Пример #26
0
        // 获取当前资源所在的包文件名字
        public string getCurResPakPathByResPath(string resPath, LoadParam param)
        {
            //Ctx.m_instance.m_shareData.m_resInPakPath = resPath;
            //return Ctx.m_instance.m_shareData.m_resInPakPath;
#if PKG_RES_LOAD
            string retPath = resPath;

            if ("Module/AutoUpdate.prefab" == resPath)       // 自动更新模块更新还没有实现
            {
                param.m_resLoadType = ResLoadType.eStreamingAssets;
            }
            else
            {
                // 获取包的名字
                if (m_path2PakDic.ContainsKey(resPath))
                {
                    retPath = m_path2PakDic[resPath].m_pakName;
                }

                if (param != null)
                {
                    retPath = Ctx.m_instance.m_localFileSys.getAbsPathByRelPath(ref retPath, ref param.m_resLoadType);
                }
                else
                {
                    ResLoadType tmp = ResLoadType.eStreamingAssets;
                    retPath = Ctx.m_instance.m_localFileSys.getAbsPathByRelPath(ref retPath, ref tmp);
                }
            }
            return(retPath);
#elif UnPKG_RES_LOAD
            if (param != null)
            {
                param.m_resLoadType = ResLoadType.eStreamingAssets;
            }
            return(resPath);
#else
            return(resPath);
#endif
        }
Пример #27
0
        // 通用类型,需要自己设置很多参数
        public void load(LoadParam param)
        {
            ++m_loadingDepth;
            if (m_LoadData.m_path2Res.ContainsKey(param.m_path))
            {
                loadWithResCreatedAndLoad(param);
            }
            else if (param.m_loadRes != null)
            {
                loadWithResCreatedAndNotLoad(param, m_LoadData.m_path2Res[param.m_path]);
            }
            else
            {
                loadWithNotResCreatedAndNotLoad(param);
            }
            --m_loadingDepth;

            if (m_loadingDepth == 0)
            {
                unloadNoRefResFromList();
            }
        }
Пример #28
0
        public virtual void load <T>(LoadParam param) where T : InsResBase, new()
        {
            ++m_loadingDepth;
            if (m_path2ResDic.ContainsKey(param.m_path))
            {
                loadWithResCreatedAndLoad(param);
            }
            else if (param.m_loadInsRes != null)
            {
                loadWithResCreatedAndNotLoad <T>(param, param.m_loadInsRes as T);
            }
            else
            {
                loadWithNotResCreatedAndNotLoad <T>(param);
            }
            --m_loadingDepth;

            if (m_loadingDepth == 0)
            {
                unloadNoRefResFromList();
            }
        }
Пример #29
0
 public void loadData(LoadParam param)
 {
     param.m_resPackType = ResPackType.eDataType;
     
     if (ResLoadType.eStreamingAssets == param.m_resLoadType)
     {
         param.m_path = Path.Combine(Ctx.m_instance.m_localFileSys.getLocalReadDir(), param.m_path);
     }
     else if (ResLoadType.ePersistentData == param.m_resLoadType)
     {
         param.m_path = Path.Combine(Ctx.m_instance.m_localFileSys.getLocalWriteDir(), param.m_path);
     }
     else if (ResLoadType.eLoadWeb == param.m_resLoadType)
     {
         param.m_path = Path.Combine(Ctx.m_instance.m_cfg.m_webIP, param.m_path);
     }
     //if (!string.IsNullOrEmpty(param.m_version))
     //{
     //    param.m_path = string.Format("{0}?v={1}", param.m_path, param.m_version);
     //}
     load(param);
 }
Пример #30
0
        public void loadData(LoadParam param)
        {
            param.m_resPackType = ResPackType.eDataType;

            if (ResLoadType.eStreamingAssets == param.m_resLoadType)
            {
                param.m_path = Path.Combine(Ctx.m_instance.m_localFileSys.getLocalReadDir(), param.m_path);
            }
            else if (ResLoadType.ePersistentData == param.m_resLoadType)
            {
                param.m_path = Path.Combine(Ctx.m_instance.m_localFileSys.getLocalWriteDir(), param.m_path);
            }
            else if (ResLoadType.eLoadWeb == param.m_resLoadType)
            {
                param.m_path = Path.Combine(Ctx.m_instance.m_cfg.m_webIP, param.m_path);
            }
            //if (!string.IsNullOrEmpty(param.m_version))
            //{
            //    param.m_path = string.Format("{0}?v={1}", param.m_path, param.m_version);
            //}
            load(param);
        }
Пример #31
0
        public void loadOneUpdateFile(string path, FileVerInfo fileInfo)
        {
            //string loadPath = UtilApi.combineVerPath(path, fileInfo.m_fileMd5);
            //m_loadingPath.Add(loadPath);
            m_loadingPath.Add(UtilLogic.webFullPath(path));
            if (Ctx.m_instance.m_versionSys.m_localVer.m_path2HashDic.ContainsKey(path))
            {
                UtilApi.delFile(Path.Combine(Ctx.m_instance.m_localFileSys.getLocalWriteDir(), UtilLogic.combineVerPath(path, Ctx.m_instance.m_versionSys.m_localVer.m_path2HashDic[path].m_fileMd5)));     // 删除当前目录下已经有的 old 文件
            }
            //UtilApi.delFileNoVer(path);     // 删除当前目录下已经有的 old 文件

            LoadParam param = Ctx.m_instance.m_poolSys.newObject <LoadParam>();

            param.m_path = path;

            param.m_resLoadType = ResLoadType.eLoadWeb;
            param.m_version     = fileInfo.m_fileMd5;

            param.m_loadEventHandle = onLoadEventHandle;

            Ctx.m_instance.m_resLoadMgr.loadData(param);
            Ctx.m_instance.m_poolSys.deleteObj(param);
        }
Пример #32
0
        public static void modifyLoadParam(string resPath, LoadParam param)
        {
#if PKG_RES_LOAD
            param.m_origPath = resPath;             // 记录原始的资源名字

            string retPath = resPath;

            if ("Module/AutoUpdate.prefab" == resPath)       // 自动更新模块更新还没有实现
            {
                param.m_resLoadType = ResLoadType.eStreamingAssets;
            }
            else
            {
                // 获取包的名字
                if (Ctx.m_instance.m_pPakSys.path2PakDic.ContainsKey(resPath))
                {
                    retPath = Ctx.m_instance.m_pPakSys.path2PakDic[resPath].m_pakName;
                }

                if(param != null)
                {
                    Ctx.m_instance.m_localFileSys.getAbsPathByRelPath(ref retPath, ref param.m_resLoadType);
                }
                else
                {
                    ResLoadType tmp = ResLoadType.eStreamingAssets;
                    Ctx.m_instance.m_localFileSys.getAbsPathByRelPath(ref retPath, ref tmp);
                }
            }
            param.m_path = retPath;
            param.m_pakPath = param.m_path;
#elif UnPKG_RES_LOAD
            if (param != null)
            {
                param.m_resLoadType = ResLoadType.eStreamingAssets;
            }
            param.m_path = resPath;
#else
            param.m_path = resPath;
#endif
        }
Пример #33
0
        // eLevelType 打包类型资源加载,都用协程加载
        public void loadLevel(LoadParam param)
        {
            param.resolveLevel();

#if PKG_RES_LOAD
            param.m_resPackType = ResPackType.ePakLevelType;
            param.resolvePath();
            load(param);
#elif UnPKG_RES_LOAD
            param.m_resPackType = ResPackType.eUnPakLevelType;
            param.m_resLoadType = ResLoadType.eStreamingAssets;
            load(param);
#else
            param.m_resPackType = ResPackType.eLevelType;
            param.m_resLoadType = Ctx.m_instance.m_cfg.m_resLoadType;
            load(param);
#endif
        }
Пример #34
0
 public ImageItem getAndLoadImage(LoadParam param)
 {
     loadImage(param);
     return getImage(param.m_path, param.m_subPath);
 }
Пример #35
0
 public ResItem getAndLoad(LoadParam param)
 {
     param.resolvePath();
     load(param);
     return getResource(param.m_path);
 }
Пример #36
0
 // 重置加载设置
 protected void resetLoadParam(LoadParam loadParam)
 {
     loadParam.m_loadNeedCoroutine = true;
     loadParam.m_resNeedCoroutine = true;
 }
Пример #37
0
        public void loadImage(LoadParam param)
        {
            ImageItem retImage = null;
            if (!m_path2Image.ContainsKey(param.m_subPath))
            {
                retImage = createImage(param.m_subPath, refCountResLoadResultNotify.resLoadState);
                retImage.image = getSprite(param.m_subPath);
            }
            else
            {
                retImage = m_path2Image[param.m_subPath];
            }
            retImage.refCountResLoadResultNotify.resLoadState.setLoading();
            retImage.refCountResLoadResultNotify.refCount.incRef();

            if (refCountResLoadResultNotify.resLoadState.hasLoaded())
            {
                if (param.m_loadEventHandle != null)
                {
                    param.m_loadEventHandle(retImage);
                }
            }
            else if (refCountResLoadResultNotify.resLoadState.hasNotLoadOrLoading())
            {
                if (param.m_loadEventHandle != null)
                {
                    retImage.refCountResLoadResultNotify.loadResEventDispatch.addEventHandle(param.m_loadEventHandle);
                }
            }
        }
Пример #38
0
        // 获取当前资源所在的包文件名字
        public string getCurResPakPathByResPath(string resPath, LoadParam param)
        {
            //Ctx.m_instance.m_shareData.m_resInPakPath = resPath;
            //return Ctx.m_instance.m_shareData.m_resInPakPath;
#if PKG_RES_LOAD
            string retPath = resPath;

            if ("Module/AutoUpdate.prefab" == resPath)       // 自动更新模块更新还没有实现
            {
                param.m_resLoadType = ResLoadType.eStreamingAssets;
            }
            else
            {
                // 获取包的名字
                if (m_path2PakDic.ContainsKey(resPath))
                {
                    retPath = m_path2PakDic[resPath].m_pakName;
                }

                if(param != null)
                {
                    retPath = Ctx.m_instance.m_localFileSys.getAbsPathByRelPath(ref retPath, ref param.m_resLoadType);
                }
                else
                {
                    ResLoadType tmp = ResLoadType.eStreamingAssets;
                    retPath = Ctx.m_instance.m_localFileSys.getAbsPathByRelPath(ref retPath, ref tmp);
                }
            }
            return retPath;
#elif UnPKG_RES_LOAD
            if (param != null)
            {
                param.m_resLoadType = ResLoadType.eStreamingAssets;
            }
            return resPath;
#else
            return resPath;
#endif
        }
Пример #39
0
        protected void loadWithResCreatedAndNotLoad(LoadParam param, ResItem resItem)
        {
            m_LoadData.m_path2Res[param.m_path] = resItem;
            m_LoadData.m_path2Res[param.m_path].refCountResLoadResultNotify.resLoadState.setLoading();
            LoadItem loadItem = createLoadItem(param);

            if (m_curNum < m_maxParral)
            {
                m_LoadData.m_path2LDItem[param.m_path] = loadItem;
                m_LoadData.m_path2LDItem[param.m_path].load();
                ++m_curNum;
            }
            else
            {
                m_LoadData.m_willLDItem.Add(loadItem);
            }

            resetLoadParam(param);
        }
Пример #40
0
        // 资源创建并且正在被加载
        protected void loadWithResCreatedAndLoad(LoadParam param)
        {
            m_LoadData.m_path2Res[param.m_path].refCountResLoadResultNotify.refCount.incRef();
            if (m_LoadData.m_path2Res[param.m_path].refCountResLoadResultNotify.resLoadState.hasLoaded())
            {
                if (param.m_loadEventHandle != null)
                {
                    param.m_loadEventHandle(m_LoadData.m_path2Res[param.m_path]);
                }
            }
            else
            {
                if (param.m_loadEventHandle != null)
                {
                    m_LoadData.m_path2Res[param.m_path].refCountResLoadResultNotify.loadResEventDispatch.addEventHandle(param.m_loadEventHandle);
                }
            }

            resetLoadParam(param);
        }
Пример #41
0
        protected LoadItem createLoadItem(LoadParam param)
        {
            LoadItem loadItem = findLoadItemFormPool(param.m_resPackType);

            if (ResPackType.eResourcesType == param.m_resPackType)        // 默认 Bundle 中资源
            {
                if (loadItem == null)
                {
                    loadItem = new ResourceLoadItem();
                }
            }
            else if (ResPackType.eBundleType == param.m_resPackType)        // Bundle 打包模式
            {
                if (loadItem == null)
                {
                    loadItem = new BundleLoadItem();
                }
            }
            else if (ResPackType.eLevelType == param.m_resPackType)
            {
                if (loadItem == null)
                {
                    loadItem = new LevelLoadItem();
                }

                (loadItem as LevelLoadItem).levelName = param.lvlName;
            }
            else if (ResPackType.eDataType == param.m_resPackType)
            {
                if (loadItem == null)
                {
                    loadItem = new DataLoadItem();
                }

                (loadItem as DataLoadItem).m_version = param.m_version;
            }
            else if (ResPackType.eUnPakType == param.m_resPackType || ResPackType.eUnPakLevelType == param.m_resPackType)
            {
                if (loadItem == null)
                {
                    loadItem = new ABUnPakLoadItem();
                }
            }
            else if (ResPackType.ePakType == param.m_resPackType || ResPackType.ePakLevelType == param.m_resPackType)
            {
                if (loadItem == null)
                {
                    loadItem = new ABPakLoadItem();
                }
            }

            loadItem.resPackType = param.m_resPackType;
            loadItem.resLoadType = param.m_resLoadType;
            loadItem.path = param.m_path;
            loadItem.pathNoExt = param.m_pathNoExt;
            loadItem.extName = param.extName;
            loadItem.loadNeedCoroutine = param.m_loadNeedCoroutine;
            loadItem.nonRefCountResLoadResultNotify.loadResEventDispatch.addEventHandle(onLoadEventHandle);

            return loadItem;
        }
Пример #42
0
        public ResItem createResItem(LoadParam param)
        {
            ResItem resItem = findResFormPool(param.m_resPackType);
            if (ResPackType.eLevelType == param.m_resPackType)
            {
                if (resItem == null)
                {
                    resItem = new LevelResItem();
                }
                (resItem as LevelResItem).levelName = param.lvlName;
            }
            else if (ResPackType.eBundleType == param.m_resPackType)
            {
                if (resItem == null)
                {
                    resItem = new BundleResItem();
                }
            }
            else if (ResPackType.eResourcesType == param.m_resPackType)
            {
                if (resItem == null)
                {
                    resItem = new PrefabResItem();
                }

                (resItem as PrefabResItem).prefabName = param.prefabName;
            }
            else if (ResPackType.eDataType == param.m_resPackType)
            {
                if (resItem == null)
                {
                    resItem = new DataResItem();
                }
            }
            else if (ResPackType.eUnPakType == param.m_resPackType)
            {
                if (resItem == null)
                {
                    resItem = new ABUnPakComFileResItem();
                }
            }
            else if (ResPackType.eUnPakLevelType == param.m_resPackType)
            {
                if (resItem == null)
                {
                    resItem = new ABUnPakLevelFileResItem();
                }
                (resItem as ABUnPakLevelFileResItem).levelName = param.lvlName;
            }
            else if (ResPackType.ePakType == param.m_resPackType)
            {
                if (resItem == null)
                {
                    resItem = new ABPakComFileResItem();
                }
            }
            else if (ResPackType.ePakLevelType == param.m_resPackType)
            {
                if (resItem == null)
                {
                    resItem = new ABPakLevelFileResItem();
                }
                (resItem as ABPakLevelFileResItem).levelName = param.lvlName;
                (resItem as ABPakLevelFileResItem).m_origPath = param.m_origPath;
            }
            //else if (ResPackType.ePakMemType == param.m_resPackType)
            //{
            //    if (resitem == null)
            //    {
            //        resitem = new ABMemUnPakComFileResItem();
            //    }
            //}
            //else if (ResPackType.ePakMemLevelType == param.m_resPackType)
            //{
            //    if (resitem == null)
            //    {
            //        resitem = new ABMemUnPakLevelFileResItem();
            //    }

            //    (resitem as ABMemUnPakLevelFileResItem).levelName = param.lvlName;
            //}

            resItem.refCountResLoadResultNotify.refCount.incRef();
            resItem.resNeedCoroutine = param.m_resNeedCoroutine;
            resItem.resPackType = param.m_resPackType;
            resItem.resLoadType = param.m_resLoadType;
            resItem.path = param.m_path;
            resItem.pathNoExt = param.m_pathNoExt;
            resItem.extName = param.extName;

            if (param.m_loadEventHandle != null)
            {
                resItem.refCountResLoadResultNotify.loadResEventDispatch.addEventHandle(param.m_loadEventHandle);
            }

            return resItem;
        }
Пример #43
0
        // eResourcesType 打包类型资源加载
        public void loadResources(LoadParam param)
        {
            param.resolvePath();

#if PKG_RES_LOAD
            if (param.m_path.IndexOf(PakSys.PAK_EXT) != -1)     // 如果加载的是打包文件
            {
                param.m_resPackType = ResPackType.ePakType;
            }
            else        // 加载的是非打包文件
            {
                param.m_resPackType = ResPackType.eUnPakType;
            }
            load(param);
#elif UnPKG_RES_LOAD
            // 判断资源所在的目录,是在 StreamingAssets 目录还是在 persistentData 目录下,目前由于没有完成,只能从 StreamingAssets 目录下加载
            param.m_resPackType = ResPackType.eUnPakType;
            param.m_resLoadType = ResLoadType.eStreamingAssets;
            return load(param);
#else
            param.m_resPackType = ResPackType.eResourcesType;
            param.m_resLoadType = ResLoadType.eLoadResource;
            load(param);
#endif
        }
Пример #44
0
 protected void loadWithNotResCreatedAndNotLoad(LoadParam param)
 {
     ResItem resItem = createResItem(param);
     loadWithResCreatedAndNotLoad(param, resItem);
 }
Пример #45
0
        protected void loadWithNotResCreatedAndNotLoad <T>(LoadParam param) where T : InsResBase, new()
        {
            T resItem = createResItem <T>(param);

            loadWithResCreatedAndNotLoad <T>(param, resItem);
        }
Пример #46
0
        // 通用类型,需要自己设置很多参数
        public void load(LoadParam param)
        {
            ++m_loadingDepth;
            if (m_LoadData.m_path2Res.ContainsKey(param.m_path))
            {
                loadWithResCreatedAndLoad(param);
            }
            else if(param.m_loadRes != null)
            {
                loadWithResCreatedAndNotLoad(param, m_LoadData.m_path2Res[param.m_path]);
            }
            else
            {
                loadWithNotResCreatedAndNotLoad(param);
            }
            --m_loadingDepth;

            if (m_loadingDepth == 0)
            {
                unloadNoRefResFromList();
            }
        }
Пример #47
0
 public T getAndLoad <T>(LoadParam param) where T : InsResBase, new()
 {
     load <T>(param);
     return(getRes(param.m_path) as T);
 }