Example #1
0
        /// <summary>
        /// 异步加载接口
        /// 未加载则返回LoadTask自行驱动,否则返回已加载的内容
        /// 一般作为Editor验证使用,不作为Runtime正式API
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="assetLoadPath">api传入的加载路径,Runtime下的相对路径</param>
        /// <returns>返回Task</returns>
        public LoadTaskGroup AsyncLoad <T>(string assetLoadPath) where T : UnityEngine.Object
        {
            LoadTaskGroup loadTask = null;
            var           objCache = GetObjectFormCache(typeof(T), assetLoadPath);

            if (!objCache)
            {
                loadTask = CreateAsyncLoadTask <T>(assetLoadPath);
                if (loadTask == null)
                {
                    BDebug.LogError("不存在资源:" + assetLoadPath);
                }
            }
            else
            {
                loadTask = new LoadTaskGroup(objCache);
            }

            return(loadTask);
        }
Example #2
0
        /// <summary>
        /// 异步加载接口
        /// 外部创建 需要自己管理yield,防止逻辑冲突
        /// 开放该接口,主要用于各种批量测试控制逻辑,一般情况下无需调用
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="assetLoadPath">api传入的加载路径,Runtime下的相对路径</param>
        /// <param name="callback"></param>
        /// <returns>异步任务id</returns>
        private LoadTaskGroup CreateAsyncLoadTask <T>(string assetLoadPath) where T : UnityEngine.Object
        {
            var assetBundleItem = AssetConfigLoder.GetAssetBundleData <T>(assetLoadPath);

            if (assetBundleItem != null)
            {
                //取消卸载任务
                this.CancelUnloadTask(assetBundleItem.AssetBundlePath);
                //创建任务组
                var taskGroup = new LoadTaskGroup(this, typeof(T), assetLoadPath, assetBundleItem);
                taskGroup.Id = this.taskIdxCounter++;
                // AddAsyncTaskGroup(taskGroup);
                return(taskGroup);
            }
            else
            {
                BDebug.LogError("不存在资源:" + assetLoadPath);
            }

            return(null);
        }
Example #3
0
 /// <summary>
 /// 添加一个任务组
 /// </summary>
 /// <param name="taskGroup"></param>
 public void AddAsyncTaskGroup(LoadTaskGroup taskGroup)
 {
     this.asyncLoadTaskList.Add(taskGroup);
 }