unity3d操作XML(C#)
2011-09-15 11:14
190 查看
在unity3D中使用xml的方法总结:
(使用c#)
1.需要引入一些包
上面这些应该足够了
2.创建unity3D中的一组数据结构
比如我想要存入某一个物体的运动参数
3.再使用一个类来保存MovementArgument的对象,作为xml数据结构
4.创建使用于本数据结构的存储读取过程(在底层的xml操作之上)
读取(其实读取操作与数据结构无关了,可以复用)
5.底层的xml操作
底层xml读写使用.net中的System.xml命名空间中的类和方法,具体可见http://msdn.microsoft.com/zh-cn/library/gg145036.aspx
(使用c#)
1.需要引入一些包
using UnityEngine; using System; using System.Xml; using System.Xml.Serialization; using System.IO; using System.Text; using System.Collections;
上面这些应该足够了
2.创建unity3D中的一组数据结构
比如我想要存入某一个物体的运动参数
public class MovementArgument { public String Name; public String Tag; public float position_x; public float position_y; public float position_z; public float velocity_x; public float velocity_y; public float velocity_z; }
3.再使用一个类来保存MovementArgument的对象,作为xml数据结构
public class UserData { public MovementArgument _iUser public UserData() { _iUser = new MovementArgument(); } }
4.创建使用于本数据结构的存储读取过程(在底层的xml操作之上)
读取(其实读取操作与数据结构无关了,可以复用)
public void LoadData() { StreamReader r = File.OpenText(_FileLocation+"/"+ _FileName);//_FileLocation是unity3D当前project的路径名,_FileName是xml的文件名。定义为成员变量了 //当然,你也可以在前面先判断下要读取的xml文件是否存在 String _data=r.ReadLine(); myData = DeserializeObject(_data) as UserData;//myData是上面自定义的xml存取过程中要使用的数据结构UserData r.Close(); }存储(参数要根据需要变化)
public void SaveData(String sc1, String sc2,float sc3,float sc4,float sc5,float sc6,float sc7,float sc7) { tempData._iUser.Name = sc1;//tempData是成员变量,UserData类型 tempData._iUser.Tag = sc2; tempData._iUser.position_x = sc3; tempData._iUser.position_y = sc4; tempData._iUser.position_z = sc5; tempData._iUser.direction_x = sc6; tempData._iUser.direction_z = sc7; tempData._iUser.direction_y = sc8; StreamWriter writer ; FileInfo t = new FileInfo(_FileLocation+"/"+ _FileName); t.Delete(); writer = t.CreateText(); String _data = SerializeObject(tempData);//序列化这组数据 writer.WriteLine(_data);//写入xml writer.Close(); }
5.底层的xml操作
底层xml读写使用.net中的System.xml命名空间中的类和方法,具体可见http://msdn.microsoft.com/zh-cn/library/gg145036.aspx
public String UTF8ByteArrayToString(byte []characters) { UTF8Encoding encoding = new UTF8Encoding(); String constructedString = encoding.GetString(characters); return (constructedString); } public byte[] StringToUTF8ByteArray(String pXmlString) { UTF8Encoding encoding = new UTF8Encoding(); byte []byteArray = encoding.GetBytes(pXmlString); return byteArray; } // Here we serialize our UserData object of myData public String SerializeObject(object pObject) { String XmlizedString = ""; MemoryStream memoryStream = new MemoryStream(); XmlSerializer xs = new XmlSerializer(typeof(UserData)); XmlTextWriter xmlTextWriter = new XmlTextWriter(memoryStream, Encoding.UTF8); xs.Serialize(xmlTextWriter, pObject); memoryStream = (MemoryStream)xmlTextWriter.BaseStream; // (MemoryStream) XmlizedString = UTF8ByteArrayToString(memoryStream.ToArray()); return XmlizedString; } // Here we deserialize it back into its original form public object DeserializeObject(String pXmlizedString) { XmlSerializer xs = new XmlSerializer(typeof(UserData)); MemoryStream memoryStream = new MemoryStream(StringToUTF8ByteArray(pXmlizedString)); XmlTextWriter xmlTextWriter = new XmlTextWriter(memoryStream, Encoding.UTF8); return xs.Deserialize(memoryStream); }
相关文章推荐
- unity3d操作XML(C#)
- 【转】在C#中操作XML(增删改)
- C#中如何操作XML,对XML进行增、删、改节点
- 在C#.net中如何操作XML_转摘
- C#学习笔记(12)——三种方法操作XML
- C#操作XML小结
- c# 操作xml题目
- C#对XML的操作,利用DataSet对XML进行操作。
- C#操作Xml:使用XmlWriter写Xml
- C#操作XmlDocument对象 报缺少根节点 一一道来
- c# 操作xml一般通用的范例
- c# 操作XML
- 使用C#对XML进行增删改查操作
- c#操作xml文件(XmlDocument,XmlTextReader,Linq To Xml)
- c# 操作XML文件时名称空间两个问题,附xml操作类
- C#对XML操作:(1/2/3)
- C#中对 XML节点进行添加,删除,查找和删除操作
- xml操作记录--c#
- C#:xml操作(待补充)
- C#对XML操作:一个处理XML文件的类(1)