Unity初级(十一)

@[TOC]数据持久化存储

八.数据持久化存储(上)

1.Player Prefs类

Unity内置的一个用来做数据存储的类优点:使用方便,简单缺点:存储的数据类型有限 int float string适用于:关卡数,最高分,UesrID等…// 存 PlayerPrefs.SetInt(string key, int value); PlayerPrefs.SetFloat(string key, float value); PlayerPrefs.SetString(string key, string value); // 取 PlayerPrefs.GetInt(string key); PlayerPrefs.GetInt(string key, int defaultValue); // 尝试取,如果能取到,返回值,如果取不到,返回默认值 PlayerPrefs.GetFloat(string key); PlayerPrefs.GetFloat(string key, float defaultValue); // 尝试取,如果能取到,返回值,如果取不到,返回默认值 PlayerPrefs.GetString(string key); PlayerPrefs.GetString(string key, string defaultValue); // 尝试取,如果能取到,返回值,如果取不到,返回默认值 存储路径Mac OS X:~/Library/Preferences/Windows:HKCU\Software\ [company name]\ [product name]存储的内容不会互相转型,用什么类型存的就要用什么类型取存储的内容更新不及时,在程序结束的时候才会同步,需要及时Save()// 删除: // 删除指定键值对 PlayerPrefs.DeleteKey(string key); // 删除所有的键值对 PlayerPrefs.DeleteAll(); // 判断文件中是否包含指定的键值对 bool has = PlayerPrefs.HasKey(string key); // 将对文件的修改同步到文件 PlayerPrefs.Save();

2.XML

XML是一个特殊格式文档XML的结构节点元素节点:成对出现 属性节点:包含name = "xiaoming"文本节点:元素节点包含的内容是文本节点元素节点是互相嵌套的,属性节点依赖于元素节点,文本节点包含在元素节点尖括号中根节点:直接写在文档中的元素节点,被称为是根节点(ROOT),在一个XML文档中,根节点有且只有一个 <?xml verson="1.0" encoding="utf-8"?> xiaoming 10 hashiqi 1 hashiqi 2 taidi 3 keji

C# 中的 System.Xml 类

继承结构:

System.ObjectSystem.Xml.XmlNode(表示XML节点)System.Xml.XmlDocument(表示XML文档)System.Xml.XmlAttribute(表示XML属性节点)System.Xml.XmlLinkedNodeSystem.Xml.XmlElement(表示XMl元素节点)

属性和方法:

System.Xml.XmlNode:所有节点的父类属性和方法作用InnerText获取或设置文本节点的值InnerXml获取 或 通过直接编写XML设置子节点Value获取或设置属性节点的值AppendChild(XmlNode node)将制定的节点添加到该节点的子节点列表的末尾XmlNodeList ChildNodes获取所有子节点XmlNode FirstChild获取第一个子节点bool HasChildNode判断该节点是否包含任何子节点SelectSingleNode(string XPath)选择匹配XPath表达式的第一个节点SelectNodes(string XPath)选择所有匹配XPath表达式的节点System.Xml.XmlDocument:文档属性和方法作用CreateXmlDeclaration(string version, string encoding, string standalone)创建一个具有指定参数的描述(头节点)CreateElement(string name)创建具有指定名称的元素节点CreateNode创建任意一种节点,使用时需要向下转型AppendChild(XmlNode node)继承自XmlNode,添加子节点Save(string path)将XML文档保存到指定的文件Load(string filename) +3 overload从指定的URL加载XML文档LoadXML(string xml)从指定的字符串加载XML文档XmlElement:元素节点属性和方法作用SetAttribute(string attributeName, string attributeValue)设置具有指定名称的属性节点GetAttribute(string attributeName)返回具有指定名称的属性值GetAttributeNode(string name) +1overload获得具有指定名称的属性节点HasAttributes(string name)判断该元素节点是否包含属性

生成XML的步骤

引用命名空间 System.Xml生成XML文档(XmlDocument类)生成根元素(XmlElement类)添加给文档对象依次生成子元素添加给父元素将生成的XML文档保存

使用代码生成XML文档

// 1. 引用命名空间 using System.Xml; // 2.1 设定文档路径 private string path = Application.dataPath + “/File/boxCollider.xml”; // 2.2 创建XML文档 // 2.2.1 创建一个XmlDocument文档对象 XmlDocument document = new XmlDocument(); // 2.2.2 创建一个头部描述文件,version需要是一个可以转型成float类的值,standalone传null XmlDeclaration declaration = document.CreateXmlDeclaration(“1.0”, “utf-8”, null); // 2.2.3 将生成的描述信息添加到文档中 document.AppendChild(declaration); // 3.1 创建一个根元素节点 XmlElement root = document.CreateElement(“BoxCollider”); // 3.2 将这个节点添加到文档中 document.AppendChild(root); // 4.1.1 创建元素节点 XmlElement trigger = document.CreateElement(“isTrigger”); // 4.1.2 给root添加子节点 root.AppendChild(trigger); // 4.1.3 给元素节点设置文本节点 trigger.InnerText = “False”; // 4.1.1 创建元素节点 XmlElement material = document.CreateElement(“material”); // 4.1.2 给root添加子节点 root.AppendChild(material); // 4.1.3 给元素节点设置文本节点 trigger.InnerText = “None”; // 5 添加属性节点 // 5.1.1 创建一个属性节点 XmlAttribute attribute1 = document.CreateAttribute(“type”); // 5.1.2 设置属性节点的值 attribute1.Value = “Physic Material”; // 5.1.3 给元素节点添加属性节点 material.setAttributeNode(attribute1); // 5.2 设置属性节点的方法 material.SetAttribute(“type”, “Physic Material”); // 6. 删除节点 trigger.RemoveAll(); root.RemoveChild(material); // 7. 直接设置内部xml元素 root.InnerXml = “000”; // 8. 保存xml文件 document.Save(path); // 需要传入完整的路径加文件名,如果路径文件存在,则会覆盖原文件 使用代码读取XML文档// 创建一个XmlDocument对象 XmlDocument document = new XmlDocument(); // 2. 用document读取内容 // 读取指定的文档 document.load(path); // 读取指定的xml字符串 document.loadXml(@" 1 1 1 ") // 1. 获取所有的子节点 XmlNodeList list = document.ChildNodes; // 2. 获取第一个子节点 XmlNode root = document.FirstChild; // 3. 获取指定的节点 XmlNode node = document.SelectSingle

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值