【Unity实践笔记】使用Json存储和读取数据

最近项目中需要借助txt保存一些文件的数据,于是学习了使用json
总的来说非常方便,易于理解

需求与分析

需要能够将生成的文件在本地保存一年(自创建时起),期间可以随时提取并使用
要有两种搜索途径,一种是通过输入完整的id码(由创建时的时间和随机数组成),另一种是通过查看某一天的全部文件自行筛选

由于读取txt文档比逐个读取文件并判断文件名更有效率,考虑创建文件时根据日期来存入对应的文件夹(File - 年 - 月 - 日),并将创建日期、地址数据封装成一个FileData类存入当天的Json文件FileDataDaily类,这样可以先把搜索范围精确到某一天,再进行剩下的筛选

再将该FileDataDaily文件的创建日期和地址封装成一个FDDInfo类,根据日期查询到该FDDInfo文件的地址,来读取该FileDataDaily文件,获取当天的所有文件的FileData

也可以更细分为每个月、每年的FileInfo文件,这里因为只保存1年,并没有分的太细

 

代码摘录和笔记

Json和txt文件

Json部分可以使用unity自带的JsonUtility,也可以使用Newtonsoft.Json

使用Json将类的实例的数据存入txt文件 = 将该实例序列化后写入txt文件
使用Json从txt读取类的实例的数据 = 读取txt文件后反序列化生成该实例

可序列化的属性可以在类的开头使用[Serializable]来声明

// 每个文件的信息
[System.Serializable]
public class FileData
{
   
    public string id;
    public string path;
}

// 每日生成的所有文件的链表
[System.Serializable]
public class FileDataDaily
{
   
    public List<FileData> FileDataList;
}

// 每日生成的FileDataDaily文件的信息
[System.Serializable]
public class FDDInfo
{
   
    // json文件生成的年月日
	public int year;
    public int month;
    public int day;
    // json文件存储的地址
    public string path;
}

// 每年生成的FileDataDaily文件的链表
[System.Serializable]
public class FDDInfoList
{
   
    public List<FDDInfo> infoList;
}

类之间的关系如下:
在这里插入图片描述
其中FDDInfoList和FileDataDaily会作为文件保存,内容分别为FDDInfo和FileDataList序列化的链表

 

工具脚本

工具脚本要有读取、写入txt的功能,而能正确读取和写入txt,需要可以进行正确的序列化和反序列化

 

序列化与反序列化

public string ToJson(object o)
{
   
    if 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值