当前位置: 首页 > news >正文

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

http://www.dtcms.com/a/311052.html

相关文章:

  • 【C++】第二十一节—一文详解 | 红黑树实现(规则+效率+结构+插入+查找+验证)
  • 福彩双色球第2025088期篮球号码分析
  • 电脑手机热点方式通信(上)
  • StarRocks vs ClickHouse:2025 年 OLAP 引擎终极对比指南
  • Day25-对称二叉树-
  • 仿真电路:(十七下)DC-DC升压压电路原理简单仿真
  • Clickhouse#记录隐藏字段
  • 综合:单臂路由+三层交换技术+telnet配置+DHCP
  • 【云计算】云主机的亲和性策略(四):云主机组
  • C 语言问题
  • 【机器学习】两大线性分类算法:逻辑回归与线性判别分析:找到分界线的艺术
  • 复杂路况下漏检率↓78%!陌讯动态决策模型在井盖缺失检测的实战解析
  • 系统性学习数据结构-第一讲-算法复杂度
  • Agents-SDK智能体开发[5]之集成MCP进阶
  • 机器学习 —— 决策树
  • [硬件电路-114]:模拟电路 - 信号处理电路 - 放大器的种类与比较
  • Node.js 路由与中间件
  • [硬件电路-119]:模拟电路 - 信号处理电路 - 比较器,模拟电路中的“决策者”,模拟信号到数字电平逻辑信号的转化者...
  • 音视频学习(四十六):声音的三要素
  • 小迪23-28~31-js简单回顾
  • K8S的Pod之initC容器restartPolicy新特性
  • 强光干扰下识别精度提升28%!陌讯多模态融合算法在油罐车识别的落地实践
  • ubuntu源码编译安装cmake高版本、pybind11安装、crow使用
  • 第3章栈、队列、数组和矩阵
  • 译|Netflix 技术博客:一个利用视觉-语言模型和主动学习高效构建视频分类器的框架
  • 什么叫湖仓一体
  • 一个物理引擎仿真器(mujoco这种)的计算流程
  • ubuntu 系统风扇控制软件 CoolerControl
  • 烽火HG680-KD_海思MV320处理器-安卓9-原厂系统升级包-针对解决烧录不进系统的问题
  • 【Docker】RK3576-Debian上使用Docker安装Ubuntu22.04+ROS2