/// <summary> /// 加载各种资源, /// 包括prefab预制,只能是Resource路径下的资源,加载本地的Resources资源,路径前面不用/ /// audio声效, /// assetsBundle本地资源和服务器资源, /// ttf字体, /// binary本地资源和网络资源 /// </summary> /// <param name="assetPath">资源路径</param> /// <param name="dataFormat">数据格式,默认是assetbundle</param> /// <param name="onComplete">加载成功回调函数</param> /// <param name="loadComplemeArgs">回载成功后的回调函数参数</param> /// <param name="onLoadError">加载失败回调函数</param> /// <param name="loadErrorArgs">回载失败的回调函数参数</param> /// <param name="onLoadProgress">显示进度回调函数</param> /// <param name="loadProgressArgs">显示进度时的回调参数</param> public void loadAssets(string assetPath, string dataFormat = ASSETS_BUNDLE, BaseLoader.OnLoadComplete onComplete = null, object loadComplemeArgs = null, BaseLoader.OnLoadError onLoadError = null, object loadErrorArgs = null, BaseLoader.OnLoadProgress onLoadProgress = null, object loadProgressArgs = null) { this.isInMapEditor = false; //判断缓存中有没有资源,如果有就直接返回 BaseLoader.LoadVo loadVo = CacheManager.Instance.getCacheLoadedObject(assetPath); if (loadVo != null) { StartCoroutine(DispatchSuccess(onComplete, loadVo, loadComplemeArgs)); return; } this.doLoadAsset(assetPath, dataFormat, onComplete, loadComplemeArgs, onLoadError, loadErrorArgs, onLoadProgress, loadProgressArgs); }
/// <summary> /// 缓存加载数据 /// </summary> public static bool cacheLoadInfo(Dictionary <string, QueueLoader.LoadIngInfo> cachesLoadIngs, string assetPath, string dataFormat = QueueLoader.ASSETS_BUNDLE, BaseLoader.OnLoadComplete onComplete = null, object loadComplemeArgs = null, BaseLoader.OnLoadError onLoadError = null, object loadErrorArgs = null, BaseLoader.OnLoadProgress onLoadProgress = null, object loadProgressArgs = null) { QueueLoader.LoadIngInfo loadingInfo = null; if (cachesLoadIngs.ContainsKey(assetPath) == false) { loadingInfo = new QueueLoader.LoadIngInfo(); loadingInfo.assetPath = assetPath; loadingInfo.dataFormate = dataFormat; //回调方法 loadingInfo.onLoadError = new List <BaseLoader.OnLoadError>(); loadingInfo.onComplete = new List <BaseLoader.OnLoadComplete>(); loadingInfo.onLoadProgress = new List <BaseLoader.OnLoadProgress>(); //回调方法 loadingInfo.onLoadError.Add(onLoadError); loadingInfo.onComplete.Add(onComplete); loadingInfo.onLoadProgress.Add(onLoadProgress); //回调参数dictionary loadingInfo.onErrorArgs = new List <object>(); loadingInfo.onCompleteArgs = new List <object>(); loadingInfo.onProgressArgs = new List <object>(); //当前的回调参数 loadingInfo.onErrorArgs.Add(loadErrorArgs); loadingInfo.onCompleteArgs.Add(loadComplemeArgs); loadingInfo.onProgressArgs.Add(loadProgressArgs); cachesLoadIngs.Add(assetPath, loadingInfo); return(false); } else { loadingInfo = cachesLoadIngs [assetPath];; //当前的回调参数 loadingInfo.onErrorArgs.Add(loadErrorArgs); loadingInfo.onCompleteArgs.Add(loadComplemeArgs); loadingInfo.onProgressArgs.Add(loadProgressArgs); //回调方法 loadingInfo.onLoadError.Add(onLoadError); loadingInfo.onComplete.Add(onComplete); loadingInfo.onLoadProgress.Add(onLoadProgress); return(true); } }
IEnumerator DispatchSuccess(BaseLoader.OnLoadComplete callBack, BaseLoader.LoadVo loadVo, object param = null) { yield return(1); callBack(loadVo, param); }
private void doLoadAsset(string assetPath, string dataFormat = ASSETS_BUNDLE, BaseLoader.OnLoadComplete onComplete = null, object loadComplemeArgs = null, BaseLoader.OnLoadError onLoadError = null, object loadErrorArgs = null, BaseLoader.OnLoadProgress onLoadProgress = null, object loadProgressArgs = null) { if (LoaderUtils.cacheLoadInfo(cachesLoadIngs, assetPath, dataFormat, onComplete, loadComplemeArgs, onLoadError, loadErrorArgs, onLoadProgress, loadProgressArgs) == true) { return; } ///同一时间最大只能加载MAX_LOADING个资源 if (BaseLoader.MAX_LOADING <= currentLoadingNumber) { return; } loadByQueue(); }