Beispiel #1
0
        /// <summary>
        /// 加载错误的事件监听
        /// </summary>
        /// <param name="gEvent">G event.</param>
        private void onLoadErrorHandler(BaseLoader.LoadVo loadVo, object param)
        {
            currentLoadingNumber -= 1;

            LoadIngInfo loadingInfo = cachesLoadIngs[loadVo.currentLoader.NavitePath];

            loadVo.dataFormat = loadingInfo.dataFormate;

            //遍历失败回调方法
            BaseLoader.OnLoadError completeHandler;
            for (int index = 0; index < loadingInfo.onLoadError.Count; index++)
            {
                completeHandler = (BaseLoader.OnLoadError)loadingInfo.onLoadError[index];

                if (completeHandler == null)
                {
                    continue;
                }

                if (isInMapEditor == true)
                {
                    completeHandler.Invoke(loadVo, loadingInfo.onErrorArgs [index]);
                }
                else
                {
                    StartCoroutine(DispatchError(completeHandler, loadVo, loadingInfo.onErrorArgs [index]));
                }
            }

            destroyLoader(loadVo.currentLoader);
            cachesLoadIngs.Remove(loadingInfo.assetPath);

            loadByQueue();
        }
Beispiel #2
0
        /// <summary>
        /// 队列加载当前缓存中的数据
        /// </summary>
        private void loadByQueue()
        {
            if (cachesLoadIngs.Count <= 0)
            {
                return;
            }

            LoadIngInfo loadIngInfo = LoaderUtils.getLoadinfInfo(cachesLoadIngs);

            if (loadIngInfo == null)
            {
                return;
            }

            BaseLoader baseLoader = LoaderUtils.createLoader(loadIngInfo, this.gameObject);

            ///找不到对应的加载器
            if (baseLoader == null)
            {
                return;
            }

            currentLoadingNumber += 1;

            loadIngInfo.isLoading     = true;
            loadIngInfo.currentLoader = baseLoader;

            baseLoader.onLoadError    = onLoadErrorHandler;
            baseLoader.onLoadComplete = onLoadCompleteHandler;
            baseLoader.onLoadProgress = onLoadProgressHandler;
            baseLoader.loadAsset(loadIngInfo.assetPath);
        }
Beispiel #3
0
        /// <summary>
        /// 加载完成后的事件监听
        /// </summary>
        /// <param name="gEvent">G event.</param>
        private void onLoadCompleteHandler(BaseLoader.LoadVo loadVo, object param)
        {
            currentLoadingNumber -= 1;
            LoadIngInfo loadingInfo = cachesLoadIngs[loadVo.currentLoader.NavitePath];

            loadVo.dataFormat = loadingInfo.dataFormate;

            //遍历成功回调方法
            BaseLoader.OnLoadComplete completeHandler;
            for (int index = 0; index < loadingInfo.onComplete.Count; index++)
            {
                completeHandler = (BaseLoader.OnLoadComplete)loadingInfo.onComplete[index];
                if (completeHandler == null)
                {
                    continue;
                }
                if (isInMapEditor == true)
                {
                    completeHandler.Invoke(loadVo, loadingInfo.onCompleteArgs [index]);
                }
                else
                {
                    StartCoroutine(DispatchSuccess(completeHandler, loadVo, loadingInfo.onCompleteArgs [index]));
                }
            }

            //缓存游戏加载对象
            CacheManager.Instance.cache(loadingInfo.assetPath, loadVo);

            destroyLoader(loadVo.currentLoader);
            cachesLoadIngs.Remove(loadingInfo.assetPath);

            loadByQueue();
        }
Beispiel #4
0
        /// 取销加载
        public void cancelLoad(string assetPath)
        {
            if (assetPath == null)
            {
                return;
            }

            //没有正在加载中的资源就直接返回
            if (cachesLoadIngs.ContainsKey(assetPath) == false)
            {
                return;
            }

            LoadIngInfo loadIngInfo = cachesLoadIngs[assetPath];

            cachesLoadIngs.Remove(assetPath);

            //当前正在加载中,就设置加载数量减1
            if (loadIngInfo.isLoading)
            {
                currentLoadingNumber -= 1;
            }

            ///找不到对应的加载器
            if (loadIngInfo.currentLoader == null)
            {
                return;
            }
            loadIngInfo.currentLoader.cancelLoad();
            this.destroyLoader(loadIngInfo.currentLoader);
            loadByQueue();
        }