public LoaderInParam(string url, LoadCompleteCallBack callback) { Url = url; Callback = callback; }
/// <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(); } }