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