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

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.xdnf.cn/news/16905.html

相关文章:

  • 计数组合学7.11(RSK算法)
  • 2024年网络安全预防
  • 仿muduo库实现高并发服务器
  • Python----大模型(基于LLaMA Factory角色扮演模型微调)
  • Kubernetes容器运行时-Docker or Containerd
  • 【最后一个单词的长度】
  • RK3399 启动流程 --从复位到系统加载
  • 双网卡UDP广播通信机制详解
  • Leetcode 11 java
  • fastGEO v1.7.0 大更新,支持PCA、差异分析、火山图、热图、差异箱线图、去批次等分析
  • uniapp 富文本rich-text 文本首行缩进和图片居中
  • Flutter开发 dart语言基本语法
  • 基于单片机一氧化碳CO检测/煤气防中毒检测报警系统
  • 深入理解 Docker 容器网络:为什么用 host 网络模式能解决连通性问题?
  • Vue3 setup的两个注意点
  • Spring AI MCP 技术深度解析:从工具集成到企业级实战
  • Baumer工业相机堡盟工业相机如何通过YoloV8深度学习模型实现道路车辆事故的检测识别(C#代码UI界面版)
  • LeeCode 88. 合并两个有序数组
  • RAGFLOW~Enable RAPTOR
  • 亚像素级精度的二维图像配准方法
  • 上海月赛kk
  • HCLP--ospf综合实验
  • RabbitMQ-镜像队列(Mirrored Queues)
  • VMware 下 Ubuntu 操作系统下载与安装指南
  • RAGFLOW~knowledge graph
  • Redis的ZipList、SkipList和ListPack之间的区别
  • 【Linux】重生之从零开始学习运维之Mysql
  • Au速成班-多轨编辑流程
  • STM32学习记录--Day5
  • 《C++》STL--list容器详解