当前位置: 首页 > 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.lryc.cn/news/607865.html

相关文章:

  • MATLAB科研数据可视化技术
  • LPVIMO-SAM:基于多传感器紧耦合的高精度鲁棒SLAM系统
  • Noob靶机
  • VueX进阶Pinia
  • VScode对Ubuntu用root账号进行SSH远程连接开发
  • 技巧|SwanLab记录混淆矩阵攻略
  • 解决忘记修改配置密码而无法连接nacos的问题
  • DockerFile文件执行docker bulid自动构建镜像
  • Android 15 限制APK包手动安装但不限制自升级的实现方案
  • 20250802让飞凌OK3576-C开发板在飞凌的Android14下【rk3576_u选项】适配NXP的WIFIBT模块88W8987A的蓝牙
  • 【Android】通知
  • React ahooks——副作用类hooks之useDebounceFn
  • linux eval命令的使用方法介绍
  • 【vue】创建响应式数据ref和reactive的区别
  • 防火墙配置实验2(DHCP,用户认证,安全策略)
  • C语言---函数的递归与迭代
  • 【DL学习笔记】DL入门指南
  • 《深潜React列表渲染:调和算法与虚拟DOM Diff的优化深解》
  • 2024年网络安全案例
  • rag学习-以项目为基础快速启动掌握rag
  • 建筑施工场景安全帽识别误报率↓79%:陌讯动态融合算法实战解析
  • WordPress AI写作插件开发实战:从GPT集成到企业级部署
  • retro-go 1.45 编译及显示中文
  • 浏览器及java读取ros1的topic
  • 在 Elasticsearch 中落地 Learning to Rank(LTR)
  • sqli-labs通关笔记-第28a关GET字符注入(关键字过滤绕过 手注法)
  • 关于Web前端安全防御CSRF攻防的几点考虑
  • MFC 实现托盘图标菜单图标功能
  • 【相机】曝光时间长-->拖影
  • Effective C++ 条款17:以独立语句将newed对象置入智能指针