Exemplo n.º 1
0
        /// <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));
            }
        }
Exemplo n.º 2
0
        /// <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());
            }
        }