全部的游戏开发都离不开数据存储的操做,Unity3D也不例外
PlayerPrefs:
PlayerPrefs是Unity系统自带的的一种最简单的存储方式,数据是使用字典的方法来存储的node
PlayerPrefs的经常使用方法:
SetFloat:存储float类型的数据
GetFloat:经过key值获取float类型的数据
SetInt:存储int类型的数据
GetInt:经过key值获取int类型的数据
SetString:存储string类型的数据
GetString:经过key值获取string类型的数据
DeleteAll:删除全部的PlayerPrefs数据
HasKey:判断是否存在该key值的数据json
XML数据生成和解析
都须要先建立 XmlDocument对象来调用数组
xml 指可扩展标记语言(EXtensible Markup Language)
xml 是一种标记语言,相似于HTML
xml 的设计宗旨是传输数据,而非显示数据
xml存储数据是以树形结构来存储数据的,存储的数据有一个个的节点构成,每个完整的标签算是一个元素spa
<Alarm lock=“true"> <Time>
StringValue
</Time> </Alarm>
以上Alarm(元素节点),lock(属性节点),Time(元素节点), StringValue( 本节点)都是节点(Node),
可是只有 <Alarm>......</Alarm> 和<Time>StringValue</Time>是元素(Element)设计
xml文件能够在外部建立(使用SubLimeText)拖入Unity工程中,也可使用脚本建立
在脚本中建立xml文档时会使用到几个经常使用的xml文件类
XmlDocument---xml文件类
XmlNode---xml节点类
XmlAttribute--xml属性类
XmlElement---xml元素类
注:在脚本中使用xml文件类时.须要引入命名空间System.Xml;3d
XmlNode的常见属性和方法
InnerText 获取或设置节点及其全部子节点的值(仅元素节点拥有)
Value: 获取或设置节点的值(仅属性节点拥有)
AppendChild 将指定的节点或元素添加到该节点子节点列表的末尾code
XmlElement的常见方法及属性
SetAttribute 设置具备指定名称的特性的值
HasAttribute 判断该元素节点是否具备属性orm
XmlDocument的常见方法及属性
CreateXmlDeclaration:建立一个具备指定值的 XmlDeclaration 节点。
CreateAttribute:建立一个属性
CreateNode : 建立具备指定的节点类型、Name 和 NamespaceURI 的 XmlNode。
AppendChild 将指定的节点或元素添加到该节点子节点列表的末尾
Save:将xml文档保存到指定的文件xml
edge:
//1.建立头部信息
XmlDeclaration declaration = doc.CreateXmlDeclaration ("1.0", "UTF-8", null);
//2.将头部信息添加到xml文档
doc.AppendChild (declaration);
//3.建立一个根节点
XmlNode root = doc.CreateNode (XmlNodeType.Element, "Compontent", null);
//4.给根节点添加一个name属性
XmlAttribute attribute = doc.CreateAttribute ("name");
attribute.Value = "传销无限好";
//将属性设置给根节点
root.Attributes.SetNamedItem (attribute);
//将root根节点添加到XML文档中
doc.AppendChild (root);
//5.给根节点添加一个子元素
XmlElement z_gameobject = doc.CreateElement ("gameobject");
z_gameobject.SetAttribute ("tag", "Player");
z_gameobject.SetAttribute ("layer", "Default");
z_gameobject.InnerText = "This is a gameibject";
//将子元素添加到根节点中
root.AppendChild (z_gameobject);对象
注:在存储方法的最后必定要写下面代码,来存储所编辑的xml文档.
//将xml文档存储在本地的asset文件夹下
doc.Save (Application.dataPath + "/SHN_Component.xml");
xml文件的解析
//获取Asset下的xml文件
doc.Load (Application.dataPath + "/first.xml");
//获取xml的根节点 XmlElement root = doc.DocumentElement; //获取根节点下的某一节点 XmlNode node_pos_x = root.SelectSingleNode ("/Component/gameobject/transform/position/x"); Debug.Log (node_pos_x.InnerText); //获取root中属性的集合 XmlAttributeCollection attributes = root.Attributes; foreach (XmlAttribute item in attributes) { Debug.Log ("name : " + item.Name + " Value:" + item.Value); } //知道标签的名字,来获取对应的标签的值 string xValue = root.GetElementsByTagName ("x") [2].InnerText; Debug.Log ("scale下的x值为:" + xValue); //获取一个标签下全部的子节点 XmlNodeList nodeList = root.SelectNodes ("/Component"); //遍历每个节点 foreach (XmlNode item in nodeList) { Debug.Log (item.Name); } XmlNode node = root.SelectSingleNode ("/Component/gameobject/transform/position"); foreach (XmlNode item in node.ChildNodes) { Debug.Log (item.InnerText); }
C#中XmlNode与XmlElement的区别以下:
XmlNode类表示xml文档中的单个节点,其命名空间为:System.Xml。XmlNode的三个最主要的子类包括:XmlDocument、XmlDataDocument及XmlDocumentFragment。
XmlElement继承自XmlLinkedNode又继承自XmlNode类,由此可知XmlElement是XmlNode的子类。
XmlElement是特殊的XmlNode类,Xml节点有多种类型:属性节点、注释节点、文本节点、元素节点等。也就是说XmlNode是这多种节点的统称。可是XmlElement专门指的就是元素节点。
XmlElement是具现类,能够直接实例化,而XmlNode是抽象类。
XmlElement拥有众多对Attribute的操做方法,能够方便的对其属性进行读写操做。
在编写xml文档的注意事项
一、元素的名字能够包含字母、数字、和其余字符
二、元素的名字不能以xml(XML、Xml、xML等)开头
三、元素的名字不能以数字或者标点符号开头
四、元素的名字不能包含空格
五、XML文档除了XML之外,没有其余所谓的保留字,任何的名字均可以使用,可是应该尽可能使元素名字具备可读性
六、尽可能避免使用"-"和".",由于可能引发混乱。
七、在XML元素命名中不要使用”:”,由于XML命名空间须要用到这个特殊的字符。
Json数据生成与解析
JSON是纯文本
JSON是一种轻量级的数据交换格式
JSON具备层级结构(能够 值 套 值)
JSON数据的存储能够看作是字典
在 JS 语言中,一切都是对象。所以,任何支持的类型均可以经过 JSON 来表示,例如字符串、数字、对象、数组等。可是对象和数组是比较特殊且经常使用的两种类型:
对象表示为键值对(即字典的Key--Value)
数据由逗号分隔
花括号保存对象
方括号保存数组
在JSON开发中,须要使用的类库(即命名空间)有两种:
System.Json(便于json文件的生成)
须要将System.Json.dll文件放入Asset文件夹下才能够导入命名空间
LitJson(便于JSON解析)
须要将LitJson.dll放入到Asset文件夹下
JSON开发中的经常使用类
JsonArray 是两个或更多个的JsonValue对象的有序序列
JsonObject 用来建立JSON对象,至关于一个大括号
JsonValue 可获得一个具体的value值
JSON 键值对是用来保存 JS 对象的一种方式,和 JS 对象的写法也大同小异,键/值对组合中的键名写在前面并用双引号 "" 包裹,使用冒号 : 分隔,而后紧接着值: