Esempio n. 1
0
        /// <summary>
        /// 分组执行任务,每组加载ASYNC_TASK_NUM个任务
        /// </summary>
        public void DoNextTask()
        {
            if (isStop)
            {
                return;
            }

            //获取一个任务
            while (taskList.Count > 0 && curDoTaskConter < ASYNC_TASK_NUM)
            {
                var task = taskList[0];
                taskList.RemoveAt(0);
                //这一步确保主资源最后加载,防止资源自动依赖丢失
                if (task.IsMainAsset && taskList.Count != 0)
                {
                    taskList.Add(task);
                    continue;
                }
                //主资源才加载
                IEnumeratorTool.StartCoroutine(IE_AsyncLoadAssetbundle(task, (ret) =>
                {
                    curDoTaskConter--;

                    switch (ret)
                    {
                    case LoadAssetState.IsLoding:
                        //正在加载,需要重新压入task
                        taskList.Add(task);
                        break;

                    case LoadAssetState.Fail:
                    case LoadAssetState.Success:
                        {
                            if (isStop)
                            {
                                return;
                            }
                            //判断任务进度
                            if (curDoTaskConter > 0)
                            {
                                this.DoNextTask();
                            }
                            else
                            {
                                //总进度通知
                                IsComplete  = true;
                                var instObj = loder.LoadFormAssetBundle <Object>(this.MainAssetName, this.manifestItem);
                                OnAllTaskCompleteCallback?.Invoke(MainAssetName, instObj);
                            }
                        }
                        break;
                    }
                }));

                curDoTaskConter++;
            }
        }
Esempio n. 2
0
        /// <summary>
        /// 一个任务完成的回调
        /// </summary>
        /// <param name="assetPath"></param>
        /// <param name="obj"></param>
        private void OnTaskComplete(LoaderTaskData task, Object obj)
        {
            if (isStop)
            {
                return;
            }

            //判断任务进度
            if (!task.IsMainAsset)
            {
                this.DoNextTask();
            }
            else
            {
                //总进度通知
                IsComplete = true;
                OnAllTaskCompleteCallback?.Invoke(MainAssetName, obj);
            }
        }
Esempio n. 3
0
        /// <summary>
        /// 一个任务完成的回调
        /// </summary>
        /// <param name="assetPath"></param>
        /// <param name="obj"></param>
        private void OnTaskComplete(string assetPath, Object obj)
        {
            if (isStop)
            {
                return;
            }

            //任务计数++
            taskCompleteCounter++;
            //判断任务进度
            if (taskCompleteCounter < totalTaskNum)
            {
                this.DoNextTask();
            }
            else
            {
                IsComplete = true;
                //总进度通知
                OnAllTaskCompleteCallback?.Invoke(MainAssetName, obj);
            }
        }