using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.IO;
using System.Xml.Serialization;
//注意我们在unity中保存读取Xml文档内容需要用到两个非常重要库文件using System.IO和using System.Xml.Serialization
public class mySerialization : MonoBehaviour {
string path;//首先定义一个路径
void Awake()
{
cube = GameObject.Find("Cube");
}
void Start () {
player.id = 100;
player.name = "maomaocong";
player.age = 18;
player.damage = 12000;
player.pos.x = 0;
player.pos.y = 0;
player.pos.z = 0;
path = Application.dataPath + "congSerialization.Xml";//初始化路径名称
}
void OnGUI()//只是为了测试我们简单的用OnGUI来实现
{
if (GUILayout.Button("创建新文本记录"))
{
player.pos.x = cube.transform.position.x;//保存数据的同时我们把
player.pos.y = cube.transform.position.y;
player.pos.z = cube.transform.position.z;
funSerialization();//序列化函数
}
if (GUILayout.Button("LoadData"))
{
funDeserialization();//反序列化函数
}
}
/// <summary>
/// 反序列化方法
/// </summary>
void funDeserialization()
{
FileStream fs = new FileStream(path,FileMode.Open);
XmlSerializer xmlSer = new XmlSerializer(typeof(Player));
Player newplayer =(Player) xmlSer.Deserialize(fs);
print(newplayer.id);
cube.transform.position = new Vector3(newplayer.pos.x, newplayer.pos.y,newplayer.pos.z);
fs.Close();
}
/// <summary>
/// 序列化方法
/// </summary>
void funSerialization()
{
StreamWriter sw;
FileInfo info = new FileInfo(path);//创建路径下的文件对象
if (!info.Exists)
{
sw=info.CreateText();
}else
{
info.Delete();
sw = info.CreateText();
}
XmlSerializer xmlSer = new XmlSerializer(typeof(Player));
xmlSer.Serialize(sw,player);
sw.Close();
}
public class Player
{
public int id;
public string name;
public int age;
public int damage;
public Pos pos;
}
public struct Pos{
public float x, y, z;
}
}
using System.Collections.Generic;
using UnityEngine;
using System.IO;
using System.Xml.Serialization;
//注意我们在unity中保存读取Xml文档内容需要用到两个非常重要库文件using System.IO和using System.Xml.Serialization
public class mySerialization : MonoBehaviour {
string path;//首先定义一个路径
Player player = new Player();//创建一个玩家来模拟我们在玩游戏时保存数据的方法
public GameObject cube;//为了更贴近游戏中的感受我们创建一个Cube来移动位置,再读取数据 //a保存数据之前我们需要手动移动Cube位置void Awake()
{
cube = GameObject.Find("Cube");
}
void Start () {
player.id = 100;
player.name = "maomaocong";
player.age = 18;
player.damage = 12000;
player.pos.x = 0;
player.pos.y = 0;
player.pos.z = 0;
path = Application.dataPath + "congSerialization.Xml";//初始化路径名称
}
void OnGUI()//只是为了测试我们简单的用OnGUI来实现
{
if (GUILayout.Button("创建新文本记录"))
{
player.pos.x = cube.transform.position.x;//保存数据的同时我们把
player.pos.y = cube.transform.position.y;
player.pos.z = cube.transform.position.z;
funSerialization();//序列化函数
}
if (GUILayout.Button("LoadData"))
{
funDeserialization();//反序列化函数
}
}
/// <summary>
/// 反序列化方法
/// </summary>
void funDeserialization()
{
FileStream fs = new FileStream(path,FileMode.Open);
XmlSerializer xmlSer = new XmlSerializer(typeof(Player));
Player newplayer =(Player) xmlSer.Deserialize(fs);
print(newplayer.id);
cube.transform.position = new Vector3(newplayer.pos.x, newplayer.pos.y,newplayer.pos.z);
fs.Close();
}
/// <summary>
/// 序列化方法
/// </summary>
void funSerialization()
{
StreamWriter sw;
FileInfo info = new FileInfo(path);//创建路径下的文件对象
if (!info.Exists)
{
sw=info.CreateText();
}else
{
info.Delete();
sw = info.CreateText();
}
XmlSerializer xmlSer = new XmlSerializer(typeof(Player));
xmlSer.Serialize(sw,player);
sw.Close();
}
public class Player
{
public int id;
public string name;
public int age;
public int damage;
public Pos pos;
}
public struct Pos{
public float x, y, z;
}
}