/// <summary> /// 异步获取AB包 /// </summary> /// <param name="path"></param> public void GetAssetBundleAsync(string path, System.Action <AssetBundle> callBack) { m_ABDic.TryGetValue(path, out AssetBundle ab); if (ab == null) { path = path.ToLower(); string abName = string.IsNullOrEmpty(path) ? "" : "/" + path; // 添加任务列表 List <AssetBundleCreateRequest> requests = new List <AssetBundleCreateRequest>(); requests.Add(AssetBundle.LoadFromFileAsync(ABPath + abName + ".ab")); string[] dependencies = m_Mainfest.GetAllDependencies(path + ".ab"); foreach (var name in dependencies) { if (m_ABDic.ContainsKey(Name2Key(name))) { continue; } requests.Add(AssetBundle.LoadFromFileAsync(ABPath + "/" + name)); } LoadDependenciesTask task = new LoadDependenciesTask(requests, (a) => { m_ABDic.Add(Name2Key(a.name), a); }, callBack); m_TaskPool.Add(task); } else { callBack(ab); } }
/// <summary> /// 添加一个正在加载的AB包 /// </summary> /// <param name="abkey"></param> /// <param name="task"></param> public void AddLoadingAB(string abkey, LoadDependenciesTask task) { m_LoadingAB.Add(abkey, task); }