Unity_材料持久化_XML基础

Unity数据持久化

三、XML数据持久化

3.1 XML基础概念

3.1.1 什么是XML

XML(eXtensible Markup Language)**是一种可扩展的标记语言,用于存储和传输数据。它具有以下特点:

  • 结构化:数据以层次结构组织
  • 可读性:人类和机器都能理解
  • 跨平台:不依赖特定操作系统或编程语言
  • 自描述性:标签名称具有语义含义
3.1.2 XML基本语法

1. 基本语法规则

<!-- XML的基本语法就是<元素标签></元素标签>配对出现 -->
<PlayerInfo>
<name>xxx</name>
<age>18</age>
<sex>true</sex>
  <ItemList>
    <Item>
    <id>1</id>
    <num>10</num>
    </Item>
    <Item>
    <id>2</id>
    <num>10</num>
    </Item>
  </ItemList>
</PlayerInfo>

2. 固定内容(XML声明)

<!-- 固定内容代表xml的版本使用的编码 -->
  <?xml version="1.0" encoding="UTF-8"?>

语法要点:

  • 版本声明version="1.0" 指定XML版本
  • 编码声明encoding="UTF-8" 指定字符编码
  • 根元素:每个XML文档必须有且仅有一个根元素
  • 标签配对:开始标签和结束标签必须配对
  • 大小写敏感:标签名称区分大小写
3.1.3 XML在Unity中的应用

1. 数据存储优势

  • 结构化存储:复杂数据结构的层次化表示
  • 可读性强:便于调试和手动编辑
  • 跨平台兼容:不同平台间数据交换
  • 版本控制友好:文本格式便于版本管理

2. 常见应用场景

  • 游戏配置数据
  • 关卡设计数据
  • 角色属性数据
  • 物品系统数据
  • 对话系统数据

3.1.4 XML vs 其他数据格式对比

特性XMLJSONBinaryPlayerPrefs
可读性
文件大小中等
解析速度最快
跨平台
手动编辑容易容易困难困难
版本兼容
3.1.5 XML练习

练习目标:
将C#数据类转换为XML格式,理解XML序列化的基本规则。

1. C#数据类定义

public class Item
{
public int id;
public int num;
}
public class PlayerInfo
{
public string name;
// 玩家姓名
public int atk;
// 攻击力
public int def;
// 防御力
public float moveSpeed;
// 移动速度
public float roundSpeed;
// 旋转速度
public Item weapon;
// 装备的武器
public List<
int> listInt;
// 整数列表
public List<Item> itemList;
  // 物品列表
  public Dictionary<
  int, Item> itemDic;
  // 物品字典
  }

2. XML序列化规则

基本规则:

  • 元素节点名使用数据变量名存储
  • 如果没有变量名,就用变量类型作为节点名
  • 基本类型直接存储值
  • 自定义对象使用嵌套元素
  • 集合类型使用循环存储

3. 正确的XML结构

<?xml version="1.0" encoding="utf-8"?>
  <PlayerInfo>
    <!--自己定义一个xml文件规则,元素节点名用数据变量名存储-->
    <name>xxx</name>
    <atk>100</atk>
    <def>100</def>
    <moveSpeed>100</moveSpeed>
    <roundSpeed>100</roundSpeed>
      <weapon>
      <id>1</id>
      <num>1</num>
      </weapon>
      <!--如果没有变量名,就用变量类型作为节点名-->
        <listInt>
        <int>1</int>
        <int>2</int>
        <int>3</int>
        </listInt>
        <itemList>
        <item id="1" num="1"></item>
        <item id="2" num="2"></item>
        <item id="3" num="3"></item>
        </itemList>
        <itemDic>
        <int>1</int>
        <item id="2" num="2"></item>
        <int>2</int>
          <item>
          <id>3</id>
          <num>3</num>
          </item>
        </itemDic>
      </PlayerInfo>

下面提供一个检查xml文本是否有错误的网站
https://www.runoob.com/xml/xml-validator.html

posted @ 2025-08-04 12:05  yjbjingcha  阅读(10)  评论(0)    收藏  举报