日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

unity3D数据的本地存储(xml的方式)

發布時間:2024/3/13 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 unity3D数据的本地存储(xml的方式) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

數據本地的存儲

第一種方式:unity自帶的存儲方式

PlayerPrefs.SetInt("num",num); //setFloat setString PlayerPrefs.GetInt("num",0); //getFloat getString

缺點:存儲的數據過多時,不方便

第二種方式:xml

常見的配置文件:``jsonxmlcsv`

unity一般使用的xml

下面是xml方式如何實現

1.首先如果需要使用xml文件,必須要引用 System.Xml命名空間

2.主要的功能就是實現對xml文件的增刪改查的工作

3.因為是對 xml 文件進行操作,所以首先就是獲取到xml的文件

第一步:創建一個xml的文件對象

//doucument 文件、文檔的意思XmlDocument xmlDoc = new XmlDocument(); //創建了一個xml的文件對象

第二步:根據給定的文件路徑讀取出xml文件中所有的信息,并存儲在XmlDocument對象

所用的api是 使用xml的文件對象 .Load(string path)

傳入的參數是文件的路徑,根據文件所放的位置,傳入相對路徑和絕對路徑,如果要使用相對路徑就要將文件放入``bin文件夾下的Debug文件夾下,與.exe`在同一級下面(這里只是c#工程的路徑,并非unity,后面介紹unity的路徑的寫法)

//絕對路徑:帶有盤符信息的路徑都是絕對路徑//xmlDoc.Load(@"D:\Users\Desktop\xmltest.xml");//根據給定的文件路徑讀取出xml文件中所有的信息,并存儲在XmlDocument對象//相對路徑:相對于項目的exe文件的路徑//@的關鍵字:取消/的轉義字符的作用xmlDoc.Load("xmltest.xml");//在exe文件的下一級目錄的寫法//xmlDoc.Load(@"Test/xmltest.xml");//上一級 ../// xmlDoc.Load(@"../../xmltest.xml");

第三步:獲取xml文件中的根節點,和相應的子節點,以及子節點的屬性

//找到根節點 XmlNode root = xmlDoc.SelectSingleNode("root");//在文件中根據對應的節點名找到對應的節點//找到下面的子節點 XmlNodeList list = root.ChildNodes;//找到根節點下所有的子節點//找到對應子節點的屬性元素,獲取相應的屬性:用foreach遍歷 foreach (var item in list){//XmlNode無法直接解析節點中的內容//Element:元素,元件XmlElement element = item as XmlElement;//attribute 屬性int id = int.Parse(element.GetAttribute("id"));string name = element.GetAttribute("name");Console.WriteLine("id: {0},name : {1}",id,name);}

第四步:數據的存儲:既然能夠找到相應的屬性,那么增刪改查就不是難題

  • 查找
  • //讀取static void ReadXml(){//doucument 文件、文檔的意思XmlDocument xmlDoc = new XmlDocument(); //創建了一個xml的文件對象//絕對路徑:帶有盤符信息的路徑都是絕對路徑//xmlDoc.Load(@"D:\Users\Desktop\xmltest.xml");//根據給定的文件路徑讀取出xml文件中所有的信息,并存儲在XmlDocument對象//相對路徑:相對于項目的exe文件的路徑xmlDoc.Load("xmltest.xml");//在exe文件的下一級目錄的寫法// xmlDoc.Load(@"Test/xmltest.xml");//上一級 ../// xmlDoc.Load(@"../../xmltest.xml");//nodeXmlNode root = xmlDoc.SelectSingleNode("root");//在文件中根據對應的節點名找到對應的節點XmlNodeList list = root.ChildNodes;//找到根節點下所有的子節點foreach (var item in list){//XmlNode無法直接解析節點中的內容//Element:元素,元件XmlElement element = item as XmlElement;//attribute 屬性int id = int.Parse(element.GetAttribute("id"));string name = element.GetAttribute("name");Console.WriteLine("id: {0},name : {1}",id,name);}}
  • 增加:xmlDoc.AppendChild()

    分為創建xml文件和增加節點

  • //創建xml文件static void CreateXml(){XmlDocument xmlDoc = new XmlDocument();//creatElement 創建一個節點,參數是要創建的節點的節點名XmlNode root = xmlDoc.CreateElement("root");//AppendChild把參數的節點作為前面的節點的子節點xmlDoc.AppendChild(root);xmlDoc.Save("xmltest.xml");//只有執行過這句代碼的時候,才會真正的在文件夾中創建xml文件并保存數據}//添加節點static void AddNewNode(string username,string password){//先打開要添加的xml文件XmlDocument xmlDoc = new XmlDocument();//找到根節點xmlDoc.Load("xmltest.xml");XmlNode root = xmlDoc.SelectSingleNode("root");//創建新的賬號密碼節點,并將傳入的參數存進去XmlElement newElement = xmlDoc.CreateElement("account");//創建一個新的節點,并命名為accountnewElement.SetAttribute("username", username);newElement.SetAttribute("password", password);root.AppendChild(newElement);//保存文件xmlDoc.Save("xmltest.xml");}
  • 刪除:File.Delete(path)

  • 改:直接賦值覆蓋即可

    具體實現直接參考下面整體代碼的實現

  • 第四步:保存(重要,必須) xmlDoc.Save(string path);

    每次修改完都要對修改的東西進行保存

    整個代碼實現:

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Xml; //如果需要使用xml文件操作,必須使用這個命名空間 using System.IO;namespace xml {class Program{static void Main(string[] args){ReadXml();//CreateXml();AddNewNode("張三", "123");DeleteXml("xmltest.xml");//Direction 文件夾操作所使用的類//Direction.Exists判斷給定的文件夾是否存在,存在返回true,不存在返回falseif (Directory.Exists("Config")){//刪除一個文件夾Directory.Delete("Config");}else{//創建一個文件夾Directory.CreateDirectory("Configs");}//Files文件操作用的類if (File.Exists("xmltest.xml")){File.Delete("xmltest.xml");}}//增刪改查//讀取static void ReadXml(){//doucument 文件、文檔的意思XmlDocument xmlDoc = new XmlDocument(); //創建了一個xml的文件對象//絕對路徑:帶有盤符信息的路徑都是絕對路徑//xmlDoc.Load(@"D:\Users\Desktop\xmltest.xml");//根據給定的文件路徑讀取出xml文件中所有的信息,并存儲在XmlDocument對象//相對路徑:相對于項目的exe文件的路徑xmlDoc.Load("xmltest.xml");//在exe文件的下一級目錄的寫法// xmlDoc.Load(@"Test/xmltest.xml");//上一級 ../// xmlDoc.Load(@"../../xmltest.xml");//nodeXmlNode root = xmlDoc.SelectSingleNode("root");//在文件中根據對應的節點名找到對應的節點XmlNodeList list = root.ChildNodes;//找到根節點下所有的子節點foreach (var item in list){//XmlNode無法直接解析節點中的內容//Element:元素,元件XmlElement element = item as XmlElement;//attribute 屬性int id = int.Parse(element.GetAttribute("id"));string name = element.GetAttribute("name");Console.WriteLine("id: {0},name : {1}",id,name);}}//創建xml文件static void CreateXml(){XmlDocument xmlDoc = new XmlDocument();//creatElement 創建一個節點,參數是要創建的節點的節點名XmlNode root = xmlDoc.CreateElement("root");//AppendChild把參數的節點作為前面的節點的子節點xmlDoc.AppendChild(root);xmlDoc.Save("xmltest.xml");//只有執行過這句代碼的時候,才會真正的在文件夾中創建xml文件并保存數據}//添加節點static void AddNewNode(string username,string password){//先打開要添加的xml文件XmlDocument xmlDoc = new XmlDocument();//找到根節點xmlDoc.Load("xmltest.xml");XmlNode root = xmlDoc.SelectSingleNode("root");//創建新的賬號密碼節點,并將傳入的參數存進去XmlElement newElement = xmlDoc.CreateElement("account");//創建一個新的節點,并命名為accountnewElement.SetAttribute("username", username);newElement.SetAttribute("password", password);root.AppendChild(newElement);//保存文件xmlDoc.Save("xmltest.xml");}//刪除xml文件static void DeleteXml(string path){if (File.Exists(path)){File.Delete(path);Console.WriteLine("文件刪除成功!");}else{Console.WriteLine("文件不存在");}}//刪除對應的節點static void RemoveNode(string username){//打開文件XmlDocument xmlDoc = new XmlDocument();xmlDoc.Load("test.xml");//從文件數據中找到對應的節點XmlNode root = xmlDoc.SelectSingleNode("root");XmlNodeList list = root.ChildNodes;foreach (XmlElement item in list){if(item.GetAttribute("username") == username){//刪除節點//Removechile從該節點的子節點中移除參數傳入的節點root.RemoveChild(item);break;}}//刪除節點//保存xmlDoc.Save("test.xml");}//修改節點值static void ChangeNode(string username,string password){//打開文件XmlDocument xmlDoc = new XmlDocument();xmlDoc.Load("test.xml");//從文件數據中找到對應的節點XmlNode root = xmlDoc.SelectSingleNode("root");XmlNodeList list = root.ChildNodes;foreach (XmlElement item in list){if (item.GetAttribute("username") == username){//修改節點//Removechile從該節點的子節點中移除參數傳入的節點item.SetAttribute("password", password);break;}}//保存xmlDoc.Save("test.xml");}} }

    總結

    以上是生活随笔為你收集整理的unity3D数据的本地存储(xml的方式)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。