/// <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> /// Starts the or wait. /// </summary> void StartOrWait(AssetBundleLoader assetBundleLoader) { //当前正在加载中 if (IsBusy()) { //加入等待队列 waiting.Enqueue(assetBundleLoader); } else { //开始加载! curAssetBundleLoader = assetBundleLoader; StartCoroutine(curAssetBundleLoader.LoadAsync(assetBundleLoader.name)); } }