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节点