Unity将数据直接转XML/Json文件


本文提供全流程,中文翻译。

Chinar 坚持将简单的生活方式,带给世人!

(拥有更好的阅读体验 —— 高分辨率用户请根据需求调整网页缩放比例)

Chinar —— 心分享、心创新!

助力在 Unity 中将数据直接存为 Json/XML 文件

为新手节省宝贵的时间,避免采坑!


全文高清图片,点击即可放大观看 (很多人竟然不知道)


1

Script —— 脚本

由于很多新手对于数据持久化,存为xml与Json不熟悉,在使用时,过程觉得比较复杂

.这里 Chinar 对过程进行了简化、封装为函数,直接调用即可

读取非常方便,只需要一个函数就能完成 数据—文件,文件—数据的转换!!

创建一个新脚本,复制以下脚本到其中

调用 Chinar.CreateXml (要保存到的路径+文件名,数据对象)

即可直接将数据保存为 XML 文件

相同方式调用 ToJson 传相应参数即可

注意:

需要转 Json 文件时,需要引用 LItJson

点击下载 —— LItJson (积分支持)

点击下载 —— LItJson (Chinar免费)

将下载后的 LItJson.dll 文件,放到 Asset 下的 Plugins 目录中

没有 Plugins 文件夹,就新建一个

using System;
using System.IO;
using System.Security.Cryptography;
using System.Text;
using System.Xml;
using System.Xml.Serialization;
using LitJson; namespace Cnr
{
/// <summary>
/// 存放所有公用函数 —— 静态类,用于简化逻辑、代码
/// </summary>
public sealed class Chinar
{
/// <summary>
/// Data →→→→→→ Json
/// </summary>
/// <typeparam name="T">可传入泛型</typeparam>
/// <param name="path">保存文件的路径(包含文件名+后缀)</param>
/// <param name="t">数据对象</param>
public static void ToJson<T>(string path, T t)
{
StreamWriter streamWriter = new FileInfo(path).CreateText();
streamWriter.WriteLine(JsonMapper.ToJson(t));
streamWriter.Close();
streamWriter.Dispose();
} /// <summary>
/// Json →→→→→→ Data
/// </summary>
/// <typeparam name="T">泛型--数据类型</typeparam>
/// <param name="path">文件的路径(包含文件名+后缀)</param>
/// <returns></returns>
public static T ToObject<T>(string path)
{
StreamReader streamReader = new FileInfo(path).OpenText();
T t = JsonMapper.ToObject<T>(streamReader.ReadToEnd());
streamReader.Close();
streamReader.Dispose();
return t;
} /// <summary>
/// 创建XML文件 ——(不加密)
/// </summary>
/// <param name="fileName">路径</param>
/// <param name="t">类型</param>
public static void CreateXml<T>(string fileName, T t)
{
StreamWriter writer = File.CreateText(fileName); //创建写入流对象
//序列化数据,将类型转为数据流
MemoryStream memoryStream = new MemoryStream();
XmlSerializer xs = new XmlSerializer(typeof(T));
XmlTextWriter xmlTextWriter = new XmlTextWriter(memoryStream, Encoding.UTF8);
xs.Serialize(xmlTextWriter, t);
memoryStream = (MemoryStream) xmlTextWriter.BaseStream;
UTF8Encoding encoding = new UTF8Encoding();
writer.Write(encoding.GetString(memoryStream.ToArray()));
writer.Close();
} /// <summary>
/// 读取Xml文件 ——(加密)
/// </summary>
/// <param name="path">qm文件路径</param>
/// <returns>GameData类型对象</returns>
public static T LoadXml<T>(string path)
{
StreamReader sReader = File.OpenText(path);
string dataString = sReader.ReadToEnd();
sReader.Close();
RijndaelManaged rDel = new RijndaelManaged //解密xml中的数据
{
Key = Encoding.UTF8.GetBytes("12348578902223367877723456789886"), //加密和解密采用相同的key,具体值自己填,但是必须为32位//
Mode = CipherMode.ECB,
Padding = PaddingMode.PKCS7
};
XmlSerializer xs = new XmlSerializer(typeof(T)); //反序列化
UTF8Encoding encoding = new UTF8Encoding();
//解密xml数据,并反序列化,返回对应数据类型
MemoryStream memoryStream = new MemoryStream(encoding.GetBytes(Encoding.UTF8.GetString(rDel.CreateDecryptor().TransformFinalBlock(Convert.FromBase64String(dataString), 0, Convert.FromBase64String(dataString).Length)))); //字符串转字节组
return (T) xs.Deserialize(memoryStream);
}
}
}

支持

May Be —— 搞开发,总有一天要做的事!

拥有自己的服务器,无需再找攻略!

Chinar 提供一站式教程,闭眼式创建!

为新手节省宝贵时间,避免采坑!

先点击领取 —— 阿里全产品优惠券 (享受最低优惠)



1 —— 云服务器超全购买流程 (新手必备!)



2 —— 阿里ECS云服务器自定义配置 - 购买教程(新手必备!)



3—— Windows 服务器配置、运行、建站一条龙 !



4 —— Linux 服务器配置、运行、建站一条龙 !




" role="presentation">

技术交流群:806091680 ! Chinar 欢迎你的加入


END

本博客为非营利性个人原创,除部分有明确署名的作品外,所刊登的所有作品的著作权均为本人所拥有,本人保留所有法定权利。违者必究


对于需要复制、转载、链接和传播博客文章或内容的,请及时和本博主进行联系,留言,Email: ichinar@icloud.com


对于经本博主明确授权和许可使用文章及内容的,使用时请注明文章或内容出处并注明网址

最新文章

  1. 菜鸟Python学习笔记第二天:关于Python黑客。
  2. 解决一则enq: TX – row lock contention的性能故障
  3. debian下使用gitosis+gitweb搭建SSH认证的git服务器
  4. knh
  5. python 中的sort 和java中的Collections.sort()函数的使用
  6. MySQL也有潜规则 – Select 语句不加 Order By 如何排序?
  7. Android ftp 上传图片
  8. VBS编辑字段
  9. NetSetMan IP地址切换工具
  10. Android——文件的保存和读取
  11. Machine Learning for hackers读书笔记_一句很重要的话
  12. C链表操作
  13. pcDuino安装vnc进行远程控制
  14. 装多版本号sqlserver的远程连接问题
  15. Git相关操作汇总
  16. C# 16位的GUDI
  17. IPoint Interface接口
  18. MIPI协议-DSI
  19. 2. VIM 系列 - 初探vim配置文件
  20. Go基础系列:Go slice详解

热门文章

  1. WPF实现分页控件
  2. 软工作业PSP与单元测试训练
  3. &lt;input&gt;标签单、复选相关查询地址
  4. 后端程序员必会常用Linux命令总结
  5. node-express-1
  6. PLC之六部十层电梯整体框架
  7. spring不走注解的原因
  8. 第十三次作业——回归模型与房价预测&amp;第十一次作业——sklearn中朴素贝叶斯模型及其应用&amp;第七次作业——numpy统计分布显示
  9. 如何将Excel转换成Markdown表格[转]
  10. 2018-2019-2 《网络对抗技术》Exp1 PC平台逆向破解 20165326