/// <summary> /// 检查是否已在缓存 /// </summary> /// <param name="group">加载组</param> /// <param name="name">AssetBundle名称</param> /// <param name="onLoaded">完成回调</param> /// <param name="persistent">是否常驻</param> /// <param name="async">是否异步</param> /// <returns>已缓存(是-引用计数+1,并返回true, 否-返回false)</returns> public bool CheckAssetBundleInfo(LoaderGroup group, string name, LoadMgr.GroupLoadedCallback onLoaded, bool persistent, bool async) { AssetBundleInfo info = GetAssetBundleInfo(name, persistent); if (info == null) { AddAssetBundleInfo(name, persistent); return(false); } if (info.Bundle == null) { return(false); } if (onLoaded != null) { if (!async) { onLoaded(group, info); } else { m_task.AddAsyncCallback(onLoaded, group, info); } } return(true); }
/// <summary> /// 添加加载任务 /// </summary> /// <param name="group">加载组</param> /// <param name="type">类型</param> /// <param name="path">路径</param> /// <param name="param">附加参数</param> /// <param name="onLoaded">回调</param> /// <param name="async">异步</param> /// <param name="priority">优先级</param> /// <param name="insert">插入</param> /// <returns></returns> public void AddLoadTask(LoaderGroup group, Loader.LoaderType type, string path, object param, LoadMgr.GroupLoadedCallback onLoaded, bool async, LoadMgr.LoadPriority priority = LoadMgr.LoadPriority.Normal, bool insert = false) { if (!async) { Loader loader = PopLoader(type, path, param, false); PushCallback(loader, (data) => { if (onLoaded != null) { onLoaded(group, data); } }); loader.Load(); PushLoader(loader); return; } if (group == null) { group = PopGroup(priority); } group.Add(type, path, param, onLoaded, true, insert); }
/// <summary> /// 增加异步回调 /// </summary> /// <param name="onLoaded">回调</param> /// <param name="group">加载组</param> /// <param name="data">资源对象</param> public void AddAsyncCallback(LoadMgr.GroupLoadedCallback onLoaded, LoaderGroup group, object data) { if (onLoaded == null) { return; } AsyncCallbackInfo info = new AsyncCallbackInfo { OnLoaded = onLoaded, Group = group, Data = data }; m_asyncCallbackInfos.Add(info); }
/// <summary> /// 添加任务 /// </summary> /// <param name="type">类型</param> /// <param name="path">路径</param> /// <param name="param">附加参数</param> /// <param name="onLoaded">回调</param> /// <param name="async">异步</param> /// <param name="insert">插队</param> public void Add(Loader.LoaderType type, string path, object param, LoadMgr.GroupLoadedCallback onLoaded, bool async, bool insert) { LoaderInfo loader = new LoaderInfo { Loader = m_task.PopLoader(type, path, param, async), Callback = onLoaded }; if (insert) { m_loaders.Insert(0, loader); } else { m_loaders.Add(loader); } if (InLoading && IsFinish) { IsFinish = false; LoadNext(); } }