原文链接:https://www.jianshu.com/p/6f18dac2f941
转载自简书-生产力学院
Xml是Unity中的一种比较常用的储存信息的方式,在工作中经常用到。
这篇文章是我对Xml的一点使用经验,拿出来分享给大家。
下边的代码是储存信息为Xml文件
/// <summary>
/// 将场景中的对象的信息保存为Xml文件
/// </summary>
/// <param name="filename">保存的路径</param>
/// <param name="type"></param>
/// <param name="target">信息储存的类</param>
public void SaveToXml(string filename, System.Type type, Info target)
{
XmlTextWriter xWrite = new XmlTextWriter(filename, System.Text.Encoding.UTF8);
XmlSerializer sl = new XmlSerializer(type);
sl.Serialize(xWrite, target);
xWrite.Close();
}
在使用这个方法时,需要创建一个类,来储存需要保存的信息,如下
public class Info {
public string name1;
public Vector3 position;
public Quaternion rotation;
public Vector3 scale;
}
这个类中储存了对象的基本信息,当然需要的信息可以自己添加。
在调用储存方法时,如下
using System.Collections;
using System.Collections.Generic;
using System.Xml;
using System.Xml.Serialization;
using UnityEngine;
public class InfoModel : MonoBehaviour
{
Info info = new Info();
string filename = @"./info";
// Start is called before the first frame update
void Start()
{
UpdateInfo();
SaveToXml(filename+"/test.xml",typeof(Info),info);
}
// Update is called once per frame
void UpdateInfo()
{
info.name1 = this.name;
info.position = this.transform.position;
info.rotation = this.transform.rotation;
info.scale = this.transform.localScale;
}
/// <summary>
/// 将场景中的对象的信息保存为Xml文件
/// </summary>
/// <param name="filename">保存的路径</param>
/// <param name="type"></param>
/// <param name="target">信息储存的类</param>
public void SaveToXml(string filename, System.Type type, Info target)
{
XmlTextWriter xWrite = new XmlTextWriter(filename, System.Text.Encoding.UTF8);
XmlSerializer sl = new XmlSerializer(type);
sl.Serialize(xWrite, target);
xWrite.Close();
}
}
这样就可以把文件信息保存到xml文件中。
储存的信息如下图所示
下边的代码是加载Xml文件中的信息
/// <summary>
/// 加载Xml中的信息,返回储存信息的类
/// </summary>
/// <param name="type"></param>
/// <param name="filename">加载xml文件的路径</param>
/// <returns></returns>
public Info LoadFromXml(System.Type type, string filename)
{
XmlReader xRead = new XmlTextReader(filename);
XmlSerializer sl = new XmlSerializer(type);
Info infos = (Info)sl.Deserialize(xRead);
xRead.Close();
return infos;
}
调用方法
LoadFromXml(typeof(Info), fliename);
加载Xml文件时会返回一个类的对象,接下来读取这个类,再将值赋给对象,就实现了加载功能。
使用xml保存信息,可以实现游戏的存档,物品的读取等功能。
有关虚仿技术问题请小伙伴们添加QQ群:941928511,大家一起探讨!
版权声明:本文为博主原创文章,转载请附上原文出处链接和本声明