Unity 中XML序列化和反序列化

      網友投稿 688 2025-03-31

      序列化名詞解釋:序列化是將對象狀態轉換為可保持或傳輸的格式的過程。

      與序列化相對的是反序列化,它將流轉換為對象。這兩個過程結合起來,可以輕松地存儲和傳輸數據。這就是序列化的意義所在。

      XML序列化的實質:

      序列化是不一個對象持久化到磁盤的一個過程,應用程序的一部分,甚至另一個程序都可以反序列化對象,是它的狀態與序列化之前相同,,用到的名空間System.Xml.Serialization名稱空間,反序列化可以理解為把該過程到過來再來一遍,,

      XML序列化過程的描述:

      System.Xml.Serialization命名空間中最重要的類使XmlSerializer,,,要序列化對象,首先要有被序列化的對象(比如:人物信息),,首先有一個指定的流文件(FileInfo),而后創建傳入路徑下的文件, 并且 實例化一個流/寫入器對象(StreamWriter)作為接收,,,最后需要實例化一個XmlSerializer對象,指定要序列化的對象類型,,在XmlSeralization上調用Serializer()方法,,,記得要關閉流,,

      給它傳遞流/寫入器對象和要序列化的對象被序列化的數據可以為基本數據類型的數據,字段,數組,以及XmlElement和XmlAttribute對象格式的內嵌XML,,,

      XML反序列化的過程描述:

      從XML文檔中反序列化對象,應執行上述逆向過程,創建一個流/讀取器對象和一個XmlSerializer對象,然后給DeSerializer()方法傳遞該流/讀取對象,這個方法返回序列化對象,盡管它需要強制轉換為正確的類型,,

      實際代碼演示:序列化一個游戲物體(例如玩家,怪物,NPC等)對象的實例,可以將它的數據(例如:位置,名字,等級,血量,經驗)序列化到XML中,,,

      將以下掛載到cube上,程序運行,移動cube,并點擊序列化和反序列化按鈕,,,

      using System; using System.IO; using System.Xml.Serialization; using UnityEngine; ///

      /// 注意一定是公開的 需要序列化的玩家信息 /// public class Player { public struct Pos { public float x, y, z; } public Pos pos; public string name; public float Exp; public int Level; public int HP; } public class SerializerDemo : MonoBehaviour { private string path; //存儲XML的路徑 public Player p1; //獲取玩家引用 // Use this for initialization void Start () { path = Application.dataPath + "/Demo.xml"; //實例化玩家,并初始化數據 p1 = new Player(); p1.name = "Czhenya"; p1.Exp = 0; p1.Level = 0; p1.HP = 0; } void OnGUI () { if (GUILayout.Button("CreateXML")) { p1.pos.x = this.transform.position.x; p1.pos.y = this.transform.position.y; p1.pos.z = this.transform.position.z; SerCreate(); } if (GUILayout.Button("DeXML")) { DeSerCreate(); } } /// /// 序列化方法 /// private void SerCreate() { //指定流文件 (創建XML的目錄) FileInfo info = new FileInfo(path); //Debug.Log(info); StreamWriter sw; //流寫入器對象,, if (!info.Exists) //判斷路徑是否存在 { //不存在創建 sw = info.CreateText(); } else { //存在就刪除,再創建 info.Delete(); sw = info.CreateText(); } //實例化對象,并 指定序列化的類型 XmlSerializer ser = new XmlSerializer(typeof(Player)); //序列化方法,,(流寫入器,玩家) ser.Serialize(sw,p1); sw.Close(); //關閉流 } /// /// 反序列化方法 /// private void DeSerCreate() { //指定流文件 FileStream fs = new FileStream(path,FileMode.Open); XmlSerializer xmlSer = new XmlSerializer(typeof(Player)); Player readp1 =(Player) xmlSer.Deserialize(fs); Debug.Log(readp1.name); //得到的玩家信息 //將反序列化的信息賦值給玩家 this.transform.position = new Vector3(readp1.pos.x, readp1.pos.y, readp1.pos.z); } } }

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      13

      14

      15

      16

      17

      18

      19

      20

      21

      22

      23

      24

      25

      26

      27

      28

      29

      30

      31

      32

      33

      34

      35

      36

      37

      38

      39

      40

      41

      42

      43

      44

      45

      46

      47

      48

      49

      50

      51

      52

      53

      54

      55

      56

      57

      58

      59

      60

      61

      62

      63

      64

      65

      66

      67

      68

      69

      70

      71

      72

      73

      74

      75

      76

      77

      78

      79

      80

      81

      82

      83

      Unity 中XML序列化和反序列化

      84

      85

      86

      87

      88

      89

      90

      91

      92

      93

      94

      95

      96

      97

      98

      99

      100

      101

      102

      103

      104

      unity XML 彈性文件服務

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:基因數據分析軟件遷移-cellranger
      下一篇:實驗二叉樹的基本操作(建立)及遍歷
      相關文章
      婷婷久久久亚洲欧洲日产国码AV | 亚洲精品美女在线观看| 亚洲精品色在线网站| 亚洲最大无码中文字幕| 亚洲免费视频网址| 亚洲国产高清美女在线观看 | 亚洲国产欧美一区二区三区| 亚洲狠狠成人综合网| 亚洲五月综合缴情婷婷| 国产成人精品日本亚洲18图| 国产成人精品日本亚洲18图| 亚洲伊人精品综合在合线| 亚洲一区免费在线观看| 亚洲宅男精品一区在线观看| 亚洲精品一二三区| 亚洲精品无码国产片| 国产亚洲一卡2卡3卡4卡新区 | 内射干少妇亚洲69XXX| 日韩亚洲Av人人夜夜澡人人爽 | 亚洲精品国产手机| 亚洲性一级理论片在线观看| 亚洲不卡1卡2卡三卡2021麻豆| 亚洲av乱码一区二区三区| 中文字幕亚洲精品无码| 亚洲av无码一区二区三区天堂| 国产成人综合久久精品亚洲| 亚洲人成人无码网www国产| 国产aⅴ无码专区亚洲av麻豆| 久久亚洲国产欧洲精品一| 香蕉蕉亚亚洲aav综合| 亚洲美女aⅴ久久久91| 亚洲sss综合天堂久久久| 亚洲精品无AMM毛片| 亚洲AV永久无码精品一区二区国产 | 亚洲AV日韩AV鸥美在线观看| 久久精品国产亚洲av日韩| 亚洲国产成人久久精品app| 99亚偷拍自图区亚洲| 日韩精品成人亚洲专区| 国产精品xxxx国产喷水亚洲国产精品无码久久一区 | 亚洲区不卡顿区在线观看|