/// <summary> /// 执行下一个加载任务 /// </summary> void Next() { //检测队列 if (curAssetBundleLoader == null && waiting.Count > 0) { //弹出排队目标 curAssetBundleLoader = waiting.Dequeue(); //检测引用 if (curAssetBundleLoader.referenceCount <= 0) { curAssetBundleLoader.Clear(); curAssetBundleLoader = null; return; } //检测缓存 AssetBundleInstance assetBundleInstance; cache.TryGetValue(curAssetBundleLoader.name, out assetBundleInstance); if (assetBundleInstance != null) { curAssetBundleLoader.onLoadAssetBundle(curAssetBundleLoader.name, assetBundleInstance.assetBundle); curAssetBundleLoader = null; return; } //启动加载 StartCoroutine(curAssetBundleLoader.LoadAsync(curAssetBundleLoader.name)); } }
/// <summary> /// 检查当前运行 curAssetBundleLoader 是否加载完成 /// </summary> void Check() { if (isStop) { curAssetBundleLoader.Stop(); curAssetBundleLoader = null; Debug.LogWarningFormat(" Stop in Check() !"); } if (curAssetBundleLoader.IsCmp()) { if (curAssetBundleLoader.assetBundle == null) { Debug.LogErrorFormat("AssetBundle {0} 加载失败!", curAssetBundleLoader.name); //重置流 curAssetBundleLoader = null; return; } if (curAssetBundleLoader.referenceCount > 0) { CacheNewOne(curAssetBundleLoader); //回调完成委托 curAssetBundleLoader.CallBack(); if (debugLog) { Debug.LogFormat(" AssetBundleLoader {0}, 加载完成!,队列总数 {1}", curAssetBundleLoader.name, waiting.Count); } } else { curAssetBundleLoader.Clear(); Debug.LogWarningFormat(" AssetBundleLoader {0}, referenceCount = 0 Clear !", curAssetBundleLoader.name); } //重置流 curAssetBundleLoader = null; } else { //正在加载中! //Debug.Log("curAssetBundleLoader = " + curAssetBundleLoader.progress()); } }