Unity数据类型转XML/Json-封装函数直接调用(Chinar)
Unity将数据直接转XML/Json文件
|
本文提供全流程,中文翻译。 Chinar 坚持将简单的生活方式,带给世人! (拥有更好的阅读体验 —— 高分辨率用户请根据需求调整网页缩放比例) |
|
Chinar —— 心分享、心创新! 助力在 Unity 中将数据直接存为 Json/XML 文件 为新手节省宝贵的时间,避免采坑! |
全文高清图片,点击即可放大观看 (很多人竟然不知道)
1
Script —— 脚本
由于很多新手对于数据持久化,存为xml与Json不熟悉,在使用时,过程觉得比较复杂
.这里 Chinar 对过程进行了简化、封装为函数,直接调用即可
读取非常方便,只需要一个函数就能完成 数据—文件,文件—数据的转换!!
创建一个新脚本,复制以下脚本到其中
调用 Chinar.CreateXml (要保存到的路径+文件名,数据对象)
即可直接将数据保存为 XML 文件
相同方式调用 ToJson 传相应参数即可
注意:
需要转 Json 文件时,需要引用 LItJson
将下载后的 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
对于经本博主明确授权和许可使用文章及内容的,使用时请注明文章或内容出处并注明网址
Unity数据类型转XML/Json-封装函数直接调用(Chinar)的更多相关文章
- JSON 封装函数
var eventUtil = { addHandler:function(element,type,handler) { //添加句柄 if(element.addEventListener) { ...
- PHP 开发 APP 接口 学习笔记与总结 - JSON 结合 XML 方式封装通信接口
要求: 1.在一个类中封装多种数据通信方法(JSON,XML),并且只通过一个入口选择需要的数据通信格式 2.客户端开发工程师可以自行选择数据传输格式(GET 方式) response.php < ...
- AJAX - 封装的传参改为传入对象 XML JSON 数据格式
Ajax封装函数,上次是直接传参,这次在原来的基础上改进,模仿jQuery 直接传入对象,把之前的参数都变为这个对象的属性. 这样可以随意调换传入数据的次序. 其他优点? 需要再复习一下. Ajax处 ...
- 模块简介:(random)(xml,json,pickle,shelve)(time,datetime)(os,sys)(shutil)(pyYamal,configparser)(hashlib)
Random模块: #!/usr/bin/env python #_*_encoding: utf-8_*_ import random print (random.random()) #0.6445 ...
- Javascript:来一个AJAX封装函数
前不久换工作了,最近一直在出差,忙得跟狗一样,所以博客都荒废许久了. 最近的工作中涉及到大量的ajax操作,本来该后台做的事也要我来做了.而现在使用的ajax函数是一个后台人员封装的—-但他又是基于 ...
- $.ajax dataType设置为json 回调函数不执行
请求方式如下: $.xpost = function (url, data) { return $.ajax({ url: url, type: "POST", dataType: ...
- iOS基础 - XML & JSON
一.HTML & XML HTML 是用来描述网页的一种语言 HTML 指的是超文本标记语言 (Hyper Text Markup Language) HTML 不是一种编程语言,而是一种标记 ...
- XML+JSON面试题都在这里
XML+JSON常见面试题 什么是JSON和XML 什么是JSON和XML JSON:JavaScript Object Notation [JavaScript 对象表示法]. XML:extens ...
- 关于iOS中几种第三方对XML/JSON数据解析的使用
Json XML 大数据时代,我们需要从网络中获取海量的新鲜的各种信息,就不免要跟着两个家伙打交道,这是两种结构化的数据交换格式.一般来讲,我们会从网络获取XML或者Json格式的数据,这些数据有着特 ...
随机推荐
- 【重磅】Spring Boot 2.0权威发布
新版本特性 新版本值得关注的亮点有哪些: 基于 Java 8,支持 Java 9 也就是说Spring Boot2.0的最低版本要求为JDK8,据了解国内大部分的互联网公司系统都还跑在JDK1.6/7 ...
- taotao商城遇到的问题
1,在进行测试的时候,访问:http://localhost:8080/taotao-manager-web/ 可以出现首页 2,做了mybatis逆向工程之后,整合了spring,mybatis,测 ...
- 历史命令与实时记录(redhat6.8)
历史命令与实时记录(redhat6.8) linuxshell 2018年02月13日 10时58分53秒 参数 HISTTIMEFORMAT HISTSIZE HISTFILESIZE HISTFI ...
- FNMP
Table of Contents 平台 FNMP安装 FNMP配置 php配置 mysql配置 nginx配置 phpMyAdmin配置 平台 freeBSD 12.0 FNMP安装 php安装 v ...
- JavaScript 进阶
字符串方法 ① charAt() 方法可返回指定位置的字符 ② indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置 ③ split() 方法将字符串分割为字符串数组,并返回此数组 ...
- 电脑小白和ta的小白电脑——Git的使用
简单介绍Git的安装和基本指令,不要抱太大希望QAQ 看完这篇博客,最多学会如何向远程库上传和从远程库拉取项目,复杂功能要 做中学! (一)Git的安装 1.下载 (1)官网下载地址: https:/ ...
- virtualenv与virtualenvwrapper的配置
virtualenv是用来创建python虚拟环境的一个工具(python的Scripts目录下virtualev.exe文件),virtualenvwrapper是用来 便于管理virtualenv ...
- C语言常见易错题集(分析及解答)(仅可用于交流,勿用于商业用途)
1.能正确表示a和b同时为正或同时为负的逻辑表达式是( D ). A.(a>=0||b>=0)&&(a<0||b<0) B.(a> ...
- Buzzsumo大型教程(内容营销+外链outreach必备)营销神器
做内容营销,Buzzsumo基本是必备工具.做谷歌白帽SEO的百分八十应该都用过或者至少接触过.在国外就更不用说了,很多网络营销大牛眼里,Buzzsumo的重要程度绝对超过Ahrefs! Buzzsu ...
- Linux安装软件、python开发环境
软件安装与卸载 更新Ubuntu软件下载地址 1. 寻找国内镜像源 所谓的镜像源:可以理解为提供下载软件的地方,比如Android手机上可以下载软件的91手机助手:iOS手机上可以下载软件的AppSt ...