public override void StartTask(LoaderInParam param) { base.StartTask(param); //从resources文件夹中加载 string context = AssetManager.Instance.LoadObject <TextAsset>(param.Url).text; if (context == null) { Debug.LogError("syncloading from " + param.Url + " failed!!"); return; } //调用回调函数 param.Callback.Invoke(context); //向数据管理器中加入缓存 DataManager.Instance.AddDataCache(param.Url, context); //本下载器任务完成 FinishTask(); }
//异步加载器输入路径为Application.persistent/ResourcesPath+".txt" IEnumerator Task(object param) { LoaderInParam p = param as LoaderInParam; www = new WWW(p.Url); yield return www; if (!string.IsNullOrEmpty(www.error)) { Debug.Log("asyncloading from "+p.Url+" faild , error mesage : "+www.error); yield break; } //回调函数执行 p.Callback.Invoke(www.text); //向数据管理器中加入缓存 DataManager.Instance.AddDataCache(p.Url, www.text); //下载器完成任务 FinishTask(); }
/// <summary> /// 下载器开启任务 /// </summary> /// <param name="url"></param> public virtual void StartTask(LoaderInParam param) { LoaderManager.Instance.LoaderCount++; }
public override void StartTask(LoaderInParam param) { base.StartTask(param); StartCoroutine("Task", param); }
/// <summary> /// 加载数据 /// </summary> /// <param name="isPersistant">默认会在persistent文件夹中缓存。当为false时,资源可通过配置文件修改,而不进行persistent文件夹缓存</param> /// <returns></returns> public void LoadData(string dataName, LoadCompleteCallBack callback, bool isPersistent = true) { string path = null; //ResourcesPath 无扩展名 if (!dataPaths.TryGetValue(dataName, out path)) { Debug.LogError("load data failed! no exists data: " + dataName); return; } //回调函数不能是空的,必须要使用异步回调返回值 if (callback == null) { Debug.LogError("LoadCompleteCallBack is null !"); return; } //先去缓存区找 string context = null; if (dataCaches.TryGetValue(path, out context)) { callback.Invoke(context); return; } //如果不需要缓存进入本地文件,说明该文件每次都需要从resource中加载,可用配置文件修改并配置 if (isPersistent == false) { //从resources中同步读取 Loader l = LoaderManager.Instance.GetLoader(LoaderManager.LoaderType.Sync); l.StartTask(new LoaderInParam(path, callback)); //完成后,缓存中已经有数据 return; } //缓存区不存在或者被清除,或者非第一次启动游戏(缓存区为空) //从本地文件夹中找 //C:/Users/Administrator/AppData/LocalLow/DefaultCompany/LittleHero //本地能找到 string localPath = Application.persistentDataPath + "/" + path + ".txt"; if (File.Exists(localPath)) { //从persistent文件夹中用异步加载方式读取 Loader l = LoaderManager.Instance.GetLoader(LoaderManager.LoaderType.Async); LoaderInParam param = new LoaderInParam(localPath, callback); l.StartTask(param); } else //本地无法找到,从resources中加载初始数据 { //从resources中同步读取 Loader l = LoaderManager.Instance.GetLoader(LoaderManager.LoaderType.Sync); l.StartTask(new LoaderInParam(path, callback)); //完成后,缓存中已经有数据 //写入persistent文件夹 string pathName = PathUtils.GetPathName(path); string fileName = PathUtils.GetFileName(path); StreamWriter wr = null; if (pathName.Equals("")) { wr = new StreamWriter(Application.persistentDataPath + "/" + fileName + ".txt", false); wr.Write(dataCaches[path]); } else { Directory.CreateDirectory(Application.persistentDataPath + "/" + pathName); wr = new StreamWriter(Application.persistentDataPath + "/" + path + ".txt", false); wr.Write(dataCaches[path]); } wr.Dispose(); } }