/// <summary> /// 检查是否已在缓存 /// </summary> /// <param name="group">加载组</param> /// <param name="name">AssetBundle名称</param> /// <param name="callback">完成回调</param> /// <param name="persistent">是否常驻</param> /// <param name="async">是否异步</param> /// <returns>已缓存(是-引用计数+1,并返回true, 否-返回false)</returns> public bool CheckAssetBundleInfo(LoaderGroup group, string name, LoaderGroupCompleteCallback callback, bool persistent, bool async) { AssetBundleInfo assetBundleInfo = GetAssetBundleInfo(name, persistent); if (null == assetBundleInfo) { AddAssetBundleInfo(name, persistent); return(false); } if (null == assetBundleInfo.assetBundle) { return(false); } if (null != callback) { if (!async) { callback(group, assetBundleInfo); } else { m_LoaderTask.AddAsyncCallback(callback, group, assetBundleInfo); } } return(true); }
/// <summary> /// 添加加载任务 /// </summary> /// <param name="group">加载组</param> /// <param name="type">类型</param> /// <param name="path">路径</param> /// <param name="param">附加参数</param> /// <param name="completeCallback">回调</param> /// <param name="async">异步</param> /// <param name="priority">优先级</param> /// <param name="insert">插入</param> /// <returns></returns> public void AddLoadTask(LoaderGroup group, LoaderType type, string path, object param, LoaderGroupCompleteCallback completeCallback, bool async, LoadPriority priority = LoadPriority.Normal, bool insert = false) { if (!async) { Loader loader = GetLoader(type, path, param, false); PushCallback(loader, (data) => { completeCallback?.Invoke(group, data); }); loader.Start(); ReleaseLoader(loader); return; } if (group == null) { group = PopGroup(priority); } group.Add(type, path, param, completeCallback, true, insert); }
/// <summary> /// 增加异步回调 /// </summary> /// <param name="callback">回调</param> /// <param name="group">加载组</param> /// <param name="data">资源对象</param> public void AddAsyncCallback(LoaderGroupCompleteCallback callback, LoaderGroup group, object data) { if (null == callback) { return; } AsyncCallbackInfo info = new AsyncCallbackInfo { completeCallback = callback, Group = group, Data = data }; m_AsyncCallbackInfos.Add(info); }
/// <summary> /// 添加任务 /// </summary> /// <param name="type">类型</param> /// <param name="path">路径</param> /// <param name="param">附加参数</param> /// <param name="completeCallback">回调</param> /// <param name="async">异步</param> /// <param name="insert">插队</param> public void Add(LoaderType type, string path, object param, LoaderGroupCompleteCallback completeCallback, bool async, bool insert) { LoaderInfo loaderInfo = new LoaderInfo { loader = loaderTask.GetLoader(type, path, param, async), completeCallback = completeCallback }; if (insert) { m_ListLoaderInfos.Insert(0, loaderInfo); } else { m_ListLoaderInfos.Add(loaderInfo); } if (isLoading && isFinish) { isFinish = false; LoadNext(); } }