使用XML保存和加载对象信息

原文链接: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文件中存储的信息

下边的代码是加载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,大家一起探讨!
版权声明:本文为博主原创文章,转载请附上原文出处链接和本声明

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值