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>();
}