JSON的存储数据和读取数据

在开发过程这种,经常需要存储数据,有存就有读。今天就来说说JSON数据的存储和读取。

我这里的例子是拾取装备,把装备的名字,数量和信息存进JSON文件中。

首先,先写一个装备的基本属性的类

[CreateAssetMenu(fileName = "Clonese", menuName = "NewClonese/Clonese")]//创建一个菜单栏
public class Clonese  :ScriptableObject
{
	public string CName;//装备名字
	public int CNum;//装备数量
	[TextArea]//创建一个文本域
	public string CInfo;//装备信息
}

       创建一个list集合存储数据

[CreateAssetMenu(fileName = "Jihe", menuName = "NewJihe/Jihe")]

public class Jihe : ScriptableObject
{
	public List<Clonese> CList = new List<Clonese>();
}

创建出来的菜单栏,在这里添加出来

建一个文件管理

bag是背包

dao和jian是两件装备

扫描二维码关注公众号,回复: 15505833 查看本文章

创建出来在里面修改信息。

   接下来就是捡到装备把装备信息存进JSON文件中,和需要的时候读取出来

public class MyBag : MonoBehaviour {
	public Clonese[] cloneses;//武器的3个属性集合
	public Jihe jihe;//list集合类
void Update()
{

       if (Go.Getgo().b==true)//销毁敌人时,随机生成一把武器
		{
			int i=Random.Range(0, 2);
			Go.Getgo().b = false;
			Add(i);
           
        }
}	
void Add(int a)//这里只有2个装备
	{
		if(a==0)
		{
			if (jihe.CList.Contains(cloneses[0]))
			{
				cloneses[0].CNum++;
                Write(a);
            }
			else
			{
                jihe.CList.Add(cloneses[0]);
                Write(a);
            }
		}
        if (a == 1)
        {
            if (jihe.CList.Contains(cloneses[0]))
            {
                cloneses[1].CNum++;
                Write(a);
            }
            else
            {
                jihe.CList.Add(cloneses[1]);
                Write(a);
            }
        }
    } void Write(int c)
    {
        string path1 = Application.dataPath + "/File";
        string path2 = Application.dataPath + "/File/Inventory.josn";
        if (!Directory.Exists(path1))//判断这个文件夹是否存在
        {
            Directory.CreateDirectory(path1);//没有就创建出来
        }
        FileStream fs = File.Create(path2);//将数据写入
        BinaryFormatter bf = new BinaryFormatter();//格式化器
        string josn = JsonUtility.ToJson(cloneses[c]);//转化问json格式
        bf.Serialize(fs, josn);//序列化
        fs.Close();
    }
    void Read()
    {
        if (Input.GetKeyDown(KeyCode.B))
        {
            string path = Application.dataPath + "/File/Inventory.josn";
            if (File.Exists(path))//判断有没有这个文件 有就打开
            {
                FileStream fs = File.Open(path, FileMode.Open);
                BinaryFormatter bf = new BinaryFormatter();//格式化器
                //将文件里面的内容转化成string类型输出
                string s = bf.Deserialize(fs) as string;
                JsonUtility.FromJsonOverwrite(s, jihe);//重新写回到 ScriptableObject
                print(s);
                fs.Close();
            }
        }
    }

猜你喜欢

转载自blog.csdn.net/Optimistic_lx/article/details/129572901