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

2020-11-30 18:26发布

使用列表的方式存储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}]1

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




作者:Czhenya

链接:https://czhenya.blog.csdn.net/article/details/78056719

来源:CSDN
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。