/// <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); }
/// <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); }
/// <summary> /// 添加一个任务组 /// </summary> /// <param name="taskGroup"></param> public void AddAsyncTaskGroup(LoadTaskGroup taskGroup) { this.asyncLoadTaskList.Add(taskGroup); }