Unity零基础到入门☀️| Unity中的数据存储 XML
【摘要】 📢前言本文章是Unity零基础到入门专栏的系列文章适合对Unity3D引擎感兴趣的小伙伴学习,偏向于新手学习!本篇文章就来介绍一下Unity中三种基本的数据存储方式:PlayerPrefs、XML、JSON由于是偏向于新手教程,所以不会介绍的很深刻,看完之后掌握 基本的数据读取 就足够了!下面一起来看一下吧!暂时没时间看可以直接点赞收藏不迷路,让你快速学会不加班! 🎬Unity中的三种...
📢前言
- 本文章是Unity零基础到入门专栏的系列文章
- 适合对
Unity3D引擎
感兴趣的小伙伴学习,偏向于新手学习! - 本篇文章就来介绍一下Unity中三种基本的数据存储方式:
PlayerPrefs
、XML
、JSON
- 由于是偏向于
新手教程
,所以不会介绍的很深刻,看完之后掌握 基本的数据读取 就足够了! - 下面一起来看一下吧!暂时没时间看可以直接
点赞收藏不迷路
,让你快速学会不加班!
🎬Unity中的三种数据存储
数据存储
也可以称为 数据持久化
,不管是使用哪种语言、哪种开发工具
关于数据存储这一块对于整个项目以及开发团队来说都是非常重要的一块!
举个例子,我们在各种游戏里面充钱买装备、买皮肤等等操作的背后,都是有一个庞大的数据系统在支持。
一旦发生数据泄露、删库跑路等等事故,对公司来说也都是一个巨大的损失!
那本篇文章就来介绍一下在Unity中的数据存储常用的几种方式: PlayerPrefs
、XML
、JSON
废话不多说,直接开始上干货了!
🏳️🌈XML的结构
先来看一下XML的结构
继承结构
XMLNode(节点类)
XMLNode 属性和方法 | 说明 |
---|---|
InnerText | 获取或设置结点及所有子节点的值(仅元素结点拥有) |
Value | 获取或设置结点的值(仅元素结点拥有) |
AppendChild | 将指定的结点添加到该节点的子节点列表的末尾 |
ChildNodes | 获取结点的所有子节点 |
FirstChild | 获取节点的第一个子节点 |
HasChildNodes | 判断该节点是否有任何子节点 |
SelectSingleNode | 选择匹配XPath表达式的第一个XmlNode |
SelectSingleNodes | 选择匹配XPath表达式的所有XmlNode |
XMLElement(XML元素类)
XMLElement 方法 | 说明 |
---|---|
SetAttribute | 设置具有指定名称的特性的值 |
HasAttributes | 判断该元素结点是否具有属性 |
GetAttribute | 返回具有指定名称的属性值 |
XMLDocument文档类
XMLDocument 方法 | 说明 |
---|---|
CreateXmlDeclaration | 创建一个具有指定值的XmlDeclaration节点 |
CreateElement | 创建具有指定名称的元素 |
CreateNode | 创建具有指定节点类型、Name和NamespaceURL的XMLNode |
AppendChild | 将指定的节点添加到该节点的子节点列表的末尾(继承自XmlNode) |
Save | 将XML文档保存到指定的文件 |
🏳️🌈生成XML文件
Unity引擎中如何生成本地XML数据步骤如下:
示例代码
using UnityEngine;
using UnityEngine.UI;
using System.Xml;
public class DataTest : MonoBehaviour
{
public Button b1;
void Start()
{
b1.onClick.AddListener(CreateXML);
}
public void CreateXML()
{
//创建xml文件
XmlDocument doc = new XmlDocument();
//创建xml头
XmlNode xmlNode = doc.CreateXmlDeclaration("1.0", "utf-8", null);
//添加xml头
doc.AppendChild(xmlNode);
//创建xml根节点
XmlElement root = doc.CreateElement("users");
//添加xml根节点
doc.AppendChild(root);
//通过XmlNode创建根节点的子节点
XmlNode xn_enement = doc.CreateNode(XmlNodeType.Element, "Name", null);
XmlNode xn_enement2 = doc.CreateNode(XmlNodeType.Element, "Age", null);
//设置子节点的值
xn_enement.InnerText = "张三";
xn_enement2.InnerText = "18";
//创建属性
XmlAttribute xa = doc.CreateAttribute("name");
XmlAttribute xa2 = doc.CreateAttribute("age");
//设置属性值
xa.Value = "12345";
xa2.Value = "";
//获取元素的document
XmlDocument xd = xn_enement.OwnerDocument;
//设置元素属性
xn_enement.Attributes.SetNamedItem(xa);
xn_enement2.Attributes.SetNamedItem(xa2);
//通过XmlElement再创建一个根节点的子节点
XmlElement element = doc.CreateElement("sex");
element.SetAttribute("性别", "");
element.InnerText = "男";
//添加到子节点到root结点
root.AppendChild(xn_enement);
root.AppendChild(xn_enement2);
root.AppendChild(element);
//保存xml
doc.Save(Application.dataPath+"/test.xml");
}
}
运行结果:
上述示例代码中姓名name和年龄age是通过XmlNode
创建节点的方式添加的数据
性别sex则是通过XmlElement
创建生成的数据,从结果来看添加的数据都一样
实际创建的时候要根据节点和元素的不同严格创建,这里只是提供了一个示例方法!
🏳️🌈读取Xml文件并添加数据
上面既然说了怎样生成一个xml
,那就再来写一个怎样读取和添加数据
的示例吧
上代码:
void AddXMLData()
{
string path = Application.dataPath + "/test3.xml";
if (File.Exists(path))
{
XmlDocument xml = new XmlDocument();
xml.Load(path);
XmlNode root = xml.SelectSingleNode("users");
XmlElement elementChild1 = xml.CreateElement("Hobby");
elementChild1.SetAttribute("爱好", "");
elementChild1.InnerText = "睡大觉";
//把节点添加至xml中,注意他们之间的先后顺序,这是生成XML文件的顺序
root.AppendChild(elementChild1);
//最后保存文件
xml.Save(path);
}
}
加载xml文件
很简单,找到对应的XML文件路径,使用xml.Load
进行加载即可!
然后再通过找到节点,按照层级添加数据即可!
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)