Unity 中存储数据到JSON本地文件

来源:互联网 发布:知乎福利收藏夹 编辑:程序博客网 时间:2024/05/16 07:40

使用列表的方式存储JSON文件到本地,,虽然可以实现,但是读取的时候总出现各种问题,也许是个人水平有限,,个人还是感觉用Dictionary这种键值对的方式存储,更新读取都很方便,推荐查看:点击链接,,

using System.Collections;using System.Collections.Generic;using UnityEngine;using LitJson;using System.IO;public class Person    {        public string Name { get; set; }        public double HP { get; set; }        public int Level { get; set; }        public double Exp { get; set; }        public int Attak { get; set; }    }public class PersonList    {        public List<Person> list = new List<Person>();    }public class Classtext : MonoBehaviour {    public PersonList personList = null;    // Use this for initialization    void Start () {        Person person = new Person();        person.Name = "Czhenya";        person.HP = 100;        person.Level = 30;        person.Exp = 3333.33;        person.Attak = 50;        string json1 = JsonMapper.ToJson(person);        Debug.Log(json1.ToString());        Save(person);    }    /// <summary>    /// 保存JSON数据到本地的方法    /// </summary>    /// <param name="player">要保存的对象</param>    public void Save(Person player)    {        string filePath = Application.dataPath + @"/JsonPerson.json";       // Debug.Log(Application.dataPath + @"/JsonPerson.json");        personList = new PersonList();        if (!File.Exists(filePath))        {                      personList.list.Add(player);        }        else        {            //若没有信息则新建,有则 更新,,,            bool bFind = false;            //遍历列表            for (int i = 0; i < personList.list.Count; i++)            {                                Person savePlayer = personList.list[i];                if (player.Name == savePlayer.Name)                {                    savePlayer.Level = player.Level;                    savePlayer.HP = player.Level;                    savePlayer.Exp = player.Exp;                    savePlayer.Attak = savePlayer.Attak;                bFind = true;                    break;                }            }            if (!bFind)            {                personList.list.Add(player);            }        }        //找到当前路径        FileInfo file = new FileInfo(filePath);        //判断有没有文件,有则打开文件,,没有创建后打开文件        StreamWriter sw = file.CreateText();        //ToJson接口将你的列表类传进去,,并自动转换为string类型        string json = JsonMapper.ToJson(personList.list);        //将转换好的字符串存进文件,        sw.WriteLine(json);        sw.Close();        sw.Dispose();    }}

下面是运行后,新创建出来的JsonPerson.json文件的内容,,,

[{"Name":"Czhenya","HP":100.0,"Level":30,"Exp":3333.33,"Attak":50}]

改进后的方法链接:存储和读出都可以实现了!!!推荐查看,,,http://blog.csdn.net/Czhenya/article/details/78057062