首先下载LitJson.dll
文件,并将其拖入 Unity项目中的 的 Assets/Plugins目录中
其次在你的Unity项目中创建好Assets/StreamingAssets文件夹,用于存放文件
以下为代码演示:
using LitJson;
using System;
using System.IO;
using System.Text;
using UnityEngine;
/// <summary>
/// 时间:2022年12月20日14:34:11
/// 功能:Json数据 保存与读取
/// 作者:Dtc
/// </summary>
public class JsonHelper
{
private static JsonHelper _instance;
public static JsonHelper Instance
{
get {
if (_instance == null)
{
_instance = new JsonHelper();
}
return _instance;
}
}
/// <summary>
/// 构造函数私有化
/// </summary>
private JsonHelper() { }
/// <summary>
/// 存储数据
/// </summary>
/// <typeparam name="T">要存储数据的类型</typeparam>
/// <param name="obj">要存储的出局</param>
/// <param name="unityAssetSubPath">存储数据的路径</param>
/// <returns> </returns>
public string SaveToJson<T>( T obj, string unityAssetSubPath)
{
//获取保存 文件的路径 (Application.streamingAssetsPath :即Unity中的Asset里的StreamingAssets文件夹)
string filePath = Application.streamingAssetsPath + unityAssetSubPath;
//FileInfo fileInfo = new FileInfo(filePath);
string jsonStr = JsonMapper.ToJson(obj);//主要用于将其他的类实例 转化为Json字符串
//using 强制资源清理 using 语句定义一个范围,在此范围的末尾将释放对象。
//提供可确保正确使用 IDisposable 对象的方便语法。
//注意使用前提:该对象必须继承了IDisposable接口,功能等同于try{ }Finally{ }。
using ( StreamWriter sw = new StreamWriter(filePath,false,Encoding.UTF8))
{
sw.WriteLine(jsonStr);
}
return jsonStr;
}
/// <summary>
/// 加载读取数据文件
/// </summary>
/// <typeparam name="T">要读取数据的类型</typeparam>
/// <param name="unityAssetSubPath">要读取数据的路径</param>
/// <returns>返回读取的数据</returns>
public T LoadFromJsonFile<T>(string unityAssetSubPath)
{
try
{
string filePath = Application.streamingAssetsPath + unityAssetSubPath;
T obj = JsonMapper.ToObject<T>(File.ReadAllText(filePath));//将string文本转换为对象或对象数组
if (obj == null)
{
Debug.Log("读取Json为空!");
return default(T);
}
return obj;
}
catch(Exception e)
{
Debug.Log(e);
return default(T);
}
}
}