Пример #1
0
        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();
        }
Пример #2
0
        //异步加载器输入路径为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();
        }
Пример #3
0
 /// <summary>
 /// 下载器开启任务
 /// </summary>
 /// <param name="url"></param>
 public virtual void StartTask(LoaderInParam param)
 {
     LoaderManager.Instance.LoaderCount++;
 }
Пример #4
0
 public override void StartTask(LoaderInParam param)
 {
     base.StartTask(param);
     StartCoroutine("Task", param);
 }
Пример #5
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();
            }
        }