/// <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(); }
/// <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); }
/// <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(); }
/// 取销加载 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(); }