【Unity数据持久化】使用代码存储和修改Xml文件

1.先决定存储在哪个文件夹下

**注意:**存储xml文件 在Unity中一定是使用各平台都可读可写可找到的路径
1.Resources 可读 不可写 打包后找不到 X
2.Application.streamingAssetsPath 可读 仅PC端可写 找得到 X
3.Application.dataPath 打包后找不到 X
4.Application.persistentDataPath 可读可写找得到 √

Application.persistentDataPath在本地的路径:
在这里插入图片描述

2.存储xml文件

关键类 :
XmlDocument 用于创建节点 存储文件
XmlDeclaration 用于添加版本信息
XmlElement 节点类

存储有5个步骤(跟手动写xml步骤一样)

using System.Collections;
using System.Collections.Generic;
using System.Xml;
using UnityEngine;
public class SaveXml : MonoBehaviour
{
    void Start()
    {
        //1.创建文本对象
        XmlDocument xml = new XmlDocument();

        //2.添加固定版本信息(xml的第一行)
        XmlDeclaration xmlDec = xml.CreateXmlDeclaration("1.0", "UTF-8", "");
        //  创建完后要添加到xml的第一行中
        xml.AppendChild(xmlDec);

        //3.添加根节点
        XmlElement root = xml.CreateElement("Root");
        //  加到xml文本中
        xml.AppendChild(root);

        //4.为根节点添加子节点
        //  创建一个新节点
        XmlElement name = xml.CreateElement("name");
        name.InnerText = "初代奥特曼";
        //  把此子节点加到根节点中
        root.AppendChild(name);
        //  创建一个itemList节点
        XmlElement itemList = xml.CreateElement("itemList");
        //  为itemList添加三个子节点
        for (int i = 1; i <= 3; i++)
        {
            XmlElement Item = xml.CreateElement("Item");
            //为Item添加属性
            //XmlElement中提供了添加属性的API
            //参数1 属性名
            //参数2 属性值
            Item.SetAttribute("id", i.ToString());
            Item.SetAttribute("num", (i * 10).ToString());
            itemList.AppendChild(Item);
        }
        //把itemList节点加到根节点中
        root.AppendChild(itemList);

        //5.保存
        xml.Save(Application.persistentDataPath + "/PlayerInfo2.xml");
    }
}

把此脚本挂载到任意物体上并运行
在此路径下就可以看到保存下来的xml文件
在这里插入图片描述
在这里插入图片描述

3.修改xml文件

using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Xml;
using UnityEngine;
public class SaveXml : MonoBehaviour
{
    void Start()
    {
        string path = Application.persistentDataPath + "/PlayerInfo2.xml";
        //1.先判断文件是否存在
        if (File.Exists(path))
        {
            //2.加载文件(得到上面存的xml文件)
            XmlDocument xml = new XmlDocument();
            xml.Load(path);

            //3.移除一个节点
            //  先得到要移除的节点(通过“/”可以快捷的找到某个子节点的子节点)
            XmlNode node = xml.SelectSingleNode("Root/name");
            //  得到被移除的节点的父节点
            XmlNode root = xml.SelectSingleNode("Root");
            //  再通过父节点移除此子节点
            root.RemoveChild(node);

            //4.添加一个节点
            //  先声明一个节点
            XmlElement speed = xml.CreateElement("moveSpeed");
            speed.InnerText = "20";
            //  把这个新节点加进去
            root.AppendChild(speed);

            //5.保存
            //  目前只是改了内存中的值修改完记得保存
            xml.Save(path);
        }
    }
}

修改完之后
name节点被删除了
新增了moveSpeed节点
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值