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