Unity3D学习之数据持久化——XML

文章目录

  • 1. 前言
  • 2. XML 基本语法
    • 2.1 固定语法(重要)
    • 2.2 注释
    • 2.3 基本语法
    • 2.4 基本规则
    • 2.5 xml 属性
    • 2.6 验证语法错误
    • 2.7 C#对象和XML的手动转换
  • 3. C#读取存储XML
    • 3.1 创建xml
    • 3.2 C# 读取xml文件
      • 3.2.1 通过Resources文件进行读取
      • 3.2.2 通过xml文件进行加载
    • 3.3 C# 存储xml文件
      • 3.3.1 存储在哪个文件夹
      • 3.3.2 存储xml文件
    • 3.4 C# 修改xml文件
  • 4 XML 序列化
    • 4.1 什么是序列化和反序列化
    • 4.2 xml 序列化
    • 4.3 自定义结点
  • 5 xml 反序列化
    • 5.1 判断文件是否存在
    • 5.2 反序列化
  • 6 IXmlSerializeable 接口(自定义xmlSerializeable类)
    • 6.1 继承 IXmlSerializable
    • 6.2 WriteXml函数
      • 6.2.1 存属性
      • 6.2.2 存结点
      • 6.2.3 写包裹结点
    • 6.3 ReadXml函数
      • 6.3.1 读属性
      • 6.3.2 读结点
      • 6.3.3 读包裹节点
    • 6.4 让dictionary支持序列化反序列化
      • 6.4.1 序列化
      • 6.4.2 反序列化
  • 7 xml数据管理类
    • 7.1 存储
    • 7.2 读取


1. 前言

Unity3D学习之数据持久化——XML_第1张图片
Unity3D学习之数据持久化——XML_第2张图片
最终达到的效果

Unity3D学习之数据持久化——XML_第3张图片
Unity3D学习之数据持久化——XML_第4张图片
Unity3D学习之数据持久化——XML_第5张图片

2. XML 基本语法

2.1 固定语法(重要)

Unity3D学习之数据持久化——XML_第6张图片

2.2 注释

在这里插入图片描述

2.3 基本语法

Unity3D学习之数据持久化——XML_第7张图片
树形结构
Unity3D学习之数据持久化——XML_第8张图片

2.4 基本规则

Unity3D学习之数据持久化——XML_第9张图片

2.5 xml 属性

Unity3D学习之数据持久化——XML_第10张图片
属性通过空格隔开 属性名 = 引导包裹的内容
Unity3D学习之数据持久化——XML_第11张图片
这两个代表的东西是一样的
Unity3D学习之数据持久化——XML_第12张图片

2.6 验证语法错误

可以在菜鸟上使用xml验证器
xml验证器
Unity3D学习之数据持久化——XML_第13张图片

2.7 C#对象和XML的手动转换

Unity3D学习之数据持久化——XML_第14张图片
Unity3D学习之数据持久化——XML_第15张图片

Unity3D学习之数据持久化——XML_第16张图片

3. C#读取存储XML

3.1 创建xml

Unity3D学习之数据持久化——XML_第17张图片
在Resources文件夹创建一个xml文件
Unity3D学习之数据持久化——XML_第18张图片

把文件再复制到streamingAsserts

3.2 C# 读取xml文件

3.2.1 通过Resources文件进行读取

在这里插入图片描述Unity3D学习之数据持久化——XML_第19张图片

3.2.2 通过xml文件进行加载

在这里插入图片描述

Unity3D学习之数据持久化——XML_第20张图片
获取根节点
Unity3D学习之数据持久化——XML_第21张图片
Unity3D学习之数据持久化——XML_第22张图片
遍历同名
在这里插入图片描述

Unity3D学习之数据持久化——XML_第23张图片

3.3 C# 存储xml文件

3.3.1 存储在哪个文件夹

存储在 PersistentDataPath 可读可写

Unity3D学习之数据持久化——XML_第24张图片

3.3.2 存储xml文件

在这里插入图片描述
Unity3D学习之数据持久化——XML_第25张图片
Unity3D学习之数据持久化——XML_第26张图片
Unity3D学习之数据持久化——XML_第27张图片
Unity3D学习之数据持久化——XML_第28张图片
Unity3D学习之数据持久化——XML_第29张图片
Unity3D学习之数据持久化——XML_第30张图片
Unity3D学习之数据持久化——XML_第31张图片

3.4 C# 修改xml文件

先移除 再添加
Unity3D学习之数据持久化——XML_第32张图片
两个方法得到子结点的子结点
Unity3D学习之数据持久化——XML_第33张图片
Unity3D学习之数据持久化——XML_第34张图片
Unity3D学习之数据持久化——XML_第35张图片

4 XML 序列化

4.1 什么是序列化和反序列化

Unity3D学习之数据持久化——XML_第36张图片

大概就是 把对象转化成可传输的字节顺序

4.2 xml 序列化

Unity3D学习之数据持久化——XML_第37张图片

Unity3D学习之数据持久化——XML_第38张图片

Unity3D学习之数据持久化——XML_第39张图片
在这里插入图片描述

在这里插入图片描述
Unity3D学习之数据持久化——XML_第40张图片
Unity3D学习之数据持久化——XML_第41张图片
这种序列化不能存储 private protect ,只能存public

也可以存数组 和list
在这里插入图片描述
Unity3D学习之数据持久化——XML_第42张图片
不支持字典的序列化

4.3 自定义结点

在这里插入图片描述
Unity3D学习之数据持久化——XML_第43张图片
在这里插入图片描述
Unity3D学习之数据持久化——XML_第44张图片
Unity3D学习之数据持久化——XML_第45张图片

5 xml 反序列化

Unity3D学习之数据持久化——XML_第46张图片

5.1 判断文件是否存在

Unity3D学习之数据持久化——XML_第47张图片

5.2 反序列化

Unity3D学习之数据持久化——XML_第48张图片
这里会有问题,如果对象初始化了值,再反序列时,不会覆盖初始化值了的属性。所以会出现重复读取
所以最好不要对类进行初始化,

6 IXmlSerializeable 接口(自定义xmlSerializeable类)

Unity3D学习之数据持久化——XML_第49张图片

Unity3D学习之数据持久化——XML_第50张图片

6.1 继承 IXmlSerializable

在需要序列化的类继承IXmlSerializable
在这里插入图片描述
需要实现三个函数
Unity3D学习之数据持久化——XML_第51张图片
第一个函数直接返回null就行
Unity3D学习之数据持久化——XML_第52张图片

在函数中可以自定义序列化 的规则

6.2 WriteXml函数

6.2.1 存属性

Unity3D学习之数据持久化——XML_第53张图片
Unity3D学习之数据持久化——XML_第54张图片

6.2.2 存结点

Unity3D学习之数据持久化——XML_第55张图片
Unity3D学习之数据持久化——XML_第56张图片

6.2.3 写包裹结点

Unity3D学习之数据持久化——XML_第57张图片
Unity3D学习之数据持久化——XML_第58张图片
Unity3D学习之数据持久化——XML_第59张图片

6.3 ReadXml函数

6.3.1 读属性

Unity3D学习之数据持久化——XML_第60张图片

6.3.2 读结点

方式1:
Unity3D学习之数据持久化——XML_第61张图片

Unity3D学习之数据持久化——XML_第62张图片
在这里插入图片描述
读到test1

Unity3D学习之数据持久化——XML_第63张图片
读到test2
在这里插入图片描述
方式2:
Unity3D学习之数据持久化——XML_第64张图片

6.3.3 读包裹节点

Unity3D学习之数据持久化——XML_第65张图片

6.4 让dictionary支持序列化反序列化

自定义一个dictionary,让其继承dictionary和 IXMLserializable

Unity3D学习之数据持久化——XML_第66张图片

6.4.1 序列化

Unity3D学习之数据持久化——XML_第67张图片
Unity3D学习之数据持久化——XML_第68张图片

Unity3D学习之数据持久化——XML_第69张图片

6.4.2 反序列化

Unity3D学习之数据持久化——XML_第70张图片

Unity3D学习之数据持久化——XML_第71张图片

Unity3D学习之数据持久化——XML_第72张图片

7 xml数据管理类

Unity3D学习之数据持久化——XML_第73张图片

Unity3D学习之数据持久化——XML_第74张图片
测试类
Unity3D学习之数据持久化——XML_第75张图片

7.1 存储

Unity3D学习之数据持久化——XML_第76张图片

7.2 读取

Unity3D学习之数据持久化——XML_第77张图片

你可能感兴趣的:(学习,xml,unity,笔记)