unity序列化和反序列XML,并添加属性
来源:互联网 发布:淘宝充话费如何退款 编辑:程序博客网 时间:2024/06/05 18:39
using UnityEngine; using System.Collections; using System.Xml; using System.Xml.Serialization; using System.IO; using System.Text; public class Reward { public Task task; public Attribute attribute; public Reward () {} public struct Task { [XmlAttribute("taskNo")] public int taskNo{ get; set;} [XmlAttribute("taskReward")] public int taskReward{ get; set;} public Id id1; public Id id2; public Id id3; } public struct Id { [XmlAttribute("flag")] public bool flag{ get; set;} [XmlAttribute("name")] public string name{ get; set;} }}public class AchievementManager: MonoBehaviour { Reward reward ; FileInfo t ; string _data; void Start () { reward = new Reward(); t = new FileInfo(Application.dataPath+"\\"+ "Achievement.xml"); LoadXML(); reward.task.id1.name = "杨纯/nate"; reward.task.id2.name = "有点笨"; reward.task.id3.name = "dlnuchunge"; Save(); } void LoadXML() { if(t.Exists) { StreamReader r = t.OpenText(); string _info = r.ReadToEnd(); r.Close(); _data=_info; if(_data.ToString() != "") { reward = (Reward)DeserializeObject(_data); } } } public void Save() { _data = SerializeObject(reward); StreamWriter writer; if(t.Exists) { t.Delete(); } writer = t.CreateText(); writer.Write(_data); writer.Close(); } string UTF8ByteArrayToString(byte[] characters) { UTF8Encoding encoding = new UTF8Encoding(); string constructedString = encoding.GetString(characters); return (constructedString); } byte[] StringToUTF8ByteArray(string pXmlString) { UTF8Encoding encoding = new UTF8Encoding(); byte[] byteArray = encoding.GetBytes(pXmlString); return byteArray; } // Here we serialize our Reward object of reward string SerializeObject(object pObject) { string XmlizedString = null; MemoryStream memoryStream = new MemoryStream(); XmlSerializer xs = new XmlSerializer(typeof(Reward)); XmlTextWriter xmlTextWriter = new XmlTextWriter(memoryStream, Encoding.UTF8); xs.Serialize(xmlTextWriter, pObject); memoryStream = (MemoryStream)xmlTextWriter.BaseStream; XmlizedString = UTF8ByteArrayToString(memoryStream.ToArray()); return XmlizedString; } // Here we deserialize it back into its original form object DeserializeObject(string pXmlizedString) { XmlSerializer xs = new XmlSerializer(typeof(Reward)); MemoryStream memoryStream = new MemoryStream(StringToUTF8ByteArray(pXmlizedString)); XmlTextWriter xmlTextWriter = new XmlTextWriter(memoryStream, Encoding.UTF8); return xs.Deserialize(memoryStream); } }
打开XML文件如下:
- unity序列化和反序列XML,并添加属性
- Unity XML的序列化和反序列化
- Unity 中XML序列化和反序列化
- XML序列化和反序列化
- XML序列化和反序列化
- Xml序列化和反序列化
- XML序列化和反序列化
- xml序列化和反序列化
- XML序列化和反序列化
- XML序列化和反序列化
- Xml序列化和反序列化
- unity xml序列化与反序列化 多平台
- 【Unity&JSON】.net JSON 数组 序列化和反序列化,并 创建玩家数据列表
- unity Dictionary序列化和反序列化及XML本地数据存储
- SimpleJSON在unity端序列化和反序列化
- Unity 数据 序列化和反序列化 通用方法
- Unity Json的序列化和反序列化
- 二进制流序列化(反序列化)和XML序列化(反序列化)
- 创建android avd 的指令
- C# 配置文件读取与修改
- 浅谈HTTP中Get与Post的区别
- C中计算程序运行时间差(毫秒级)
- 《数据之魅:基于开源工具的数据分析》笔记
- unity序列化和反序列XML,并添加属性
- 跟我做WinForm开发(1)-自定义UI
- 报表开发JFreeReport
- Android 使用.net开发的webservice做用户登录验证
- 关于苹果App Store账号申请、真机调试、发布相关知识收集
- 选购一款适合自己的显卡系列7:Memory Concerns
- java学习汇总
- 参考别人做的JS动态添加表格
- kernel笔记——中断