unity Json的读取和写入

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.IO;  //操作文件夹时需引用该命名空间
using System;

public class ReadAndwriteDate : MonoBehaviour
{

    private List<Vector3> Pos = new List<Vector3>();//位置信息
    private List<string> names = new List<string>();//名字信息

    private List<string> jsonString = new List<string>();//数组

    public JsonDate jsonDate = new JsonDate();//实例化json函数

 

    void Start()
    {
        //给数组添加元素
        foreach (Transform item in transform)
        {
            Pos.Add(item.localPosition);
            names.Add(item.name);
           // Debug.Log(item.localPosition);
           // Debug.Log(item.name);

        }

    }


    int number = 0;

    //调用写入函数。
    public void WriteDate()
    {
        number++;

        //CreateOrOPenFile("MyDate", "MyName.txt", number.ToString());

        WriteJson();

        OpenAndReadDate("MyName.txt");

    }

    //调用读取函数
    public void ReadDate()
    {
        ReadFile("MyName.txt");
    }


    //单个一次写入,不覆盖数据。
    void CreateOrOPenFile(string path, string name, string info)
    {          //路径、文件名、写入内容
        StreamWriter sw;
        FileInfo fi = new FileInfo(path + "//" + name);
        //sw = fi.CreateText();        //直接重新写入
        sw = fi.AppendText();          //在原文件后面追加内容
        sw.WriteLine(info);
        sw.Close();
        sw.Dispose();
    }


    //按照数组一起写入,再次调用覆盖上一次数据。
    void OpenAndReadDate(string TxtName)
    {
        //文件夹为与Assets并列对的文件夹,同在一个项目文件夹下。
        string FileName = Directory.GetCurrentDirectory() + @"/MyDate/" + TxtName;

        File.WriteAllLines(FileName, jsonString);

    }


    //读取txt内容
    void ReadFile(string TxtName)
    {
        //文件夹为与Assets并列对的文件夹,同在一个项目文件夹下。
        string FileName = Directory.GetCurrentDirectory() + @"/MyDate/" + TxtName;

        string[] strs = File.ReadAllLines(FileName);//读取文件的所有行,并将数据读取到定义好的字符数组strs中,一行存一个单元


        for (int i = 0; i < strs.Length; i++)
        {
            print("数据:"+strs[i]);
        }


    }


    //写Json数据
    void WriteJson()
    {

        for (int i = 0; i < Pos.Count; i++)
        {
            //实例化Json列表
            jsonDate.isTestMassage = new List<TestMassage>();
            //实例化json的关键钥匙
            TestMassage testMassage = new TestMassage();
            //给钥匙赋值
            testMassage.gameName = names[i];
            testMassage.gamePos = Pos[i];
            //添加到json列表里
            jsonDate.isTestMassage.Add(testMassage);
            //json列表元素转化成json语句
            string json = JsonUtility.ToJson(jsonDate, true);
            //添加到list里面
            jsonString.Add(json);

        }


    }

//这个方法有问题,待定中
    public void readJson()
    {

 
        for (int i = 0; i < jsonString .Count ; i++)
        {
            JsonDate jsonTemp = new JsonDate();
            jsonTemp = JsonUtility.FromJson<JsonDate>(jsonString[i]);

            Debug.Log("数量:" + jsonTemp.isTestMassage.Count);

            for (int j = 0; j < jsonTemp.isTestMassage.Count; j++)
            {
                print("名字" + jsonTemp.isTestMassage[i].gameName);
                print("坐标" + jsonTemp.isTestMassage[i].gamePos);

            }

 

        }


    }

 

 

}

 

[Serializable]
public class TestMassage
{
    public string gameName;
    public Vector3 gamePos;

}


public class JsonDate
{
    public List<TestMassage> isTestMassage = new List<TestMassage>();
}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值