11 數據存儲(Unity3D)

   

   全部的遊戲開發都離不開數據存儲的操做,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 對象的寫法也大同小異,鍵/值對組合中的鍵名寫在前面並用雙引號 "" 包裹,使用冒號 : 分隔,而後緊接着值:

相關文章
相關標籤/搜索