コード例 #1
0
        /// <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);
            }
        }
コード例 #2
0
 /// <summary>
 /// 添加一个正在加载的AB包
 /// </summary>
 /// <param name="abkey"></param>
 /// <param name="task"></param>
 public void AddLoadingAB(string abkey, LoadDependenciesTask task)
 {
     m_LoadingAB.Add(abkey, task);
 }