Example #1
0
        /// <summary>
        /// 核心功能,所有任务靠这个推进度
        /// 执行下个任务
        /// </summary>
        IEnumerator IE_AsyncTaskListUpdte()
        {
            while (true)
            {
                if (this.asyncTaskGroupQueue.Count > 0)
                {
                    //开始新任务
                    AsyncLoadTaskGroupResult task = null;

                    do
                    {
                        task = this.asyncTaskGroupQueue.Dequeue();
                    } while (task.IsCancel && this.asyncTaskGroupQueue.Count > 0);

                    //执行任务
                    if (!task.IsCancel)
                    {
                        BDebug.Log("【AssetbundleV2】开始执行异步加载:" + task.AssetBundleItem.LoadPath);

                        yield return(task);

                        if (task.IsSuccess)
                        {
                            BDebug.Log("【AssetbundleV2】加载完成:" + task.AssetBundleItem.LoadPath);
                            task.Dispose();
                        }
                    }
                }

                // BDebug.Log("【Assetbundlev2】检测 剩余任务:" + this.asyncTaskGroupList.Count + "   " + curDoTask.MainAssetName);
                yield return(null);
            }
        }
Example #2
0
        /// <summary>
        /// 异步加载接口
        /// 外部创建 需要自己管理yield,防止逻辑冲突
        /// 开放该接口,主要用于各种批量测试控制逻辑,一般情况下无需调用
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="assetName"></param>
        /// <param name="callback"></param>
        /// <returns>异步任务id</returns>
        public AsyncLoadTaskGroupResult CreateAsyncLoadTask <T>(string assetName) where T : UnityEngine.Object
        {
            var assetBundleItem = AssetConfigLoder.GetAssetBundleData <T>(assetName);

            if (assetBundleItem != null)
            {
                //添加任务组
                var taskGroup = new AsyncLoadTaskGroupResult(this, assetBundleItem);
                taskGroup.Id = this.taskIdxCounter++;
                // AddAsyncTaskGroup(taskGroup);
                return(taskGroup);
            }
            else
            {
                BDebug.LogError("不存在资源:" + assetName);
            }

            return(null);
        }
Example #3
0
 /// <summary>
 /// 添加一个任务组
 /// </summary>
 /// <param name="taskGroupResult"></param>
 public void AddAsyncTaskGroup(AsyncLoadTaskGroupResult taskGroupResult)
 {
     this.asyncTaskGroupQueue.Enqueue(taskGroupResult);
 }