VYaml | 超快速低内存占用yaml库
一、介绍
官方github仓库
YAML:YAML Ain’t Markup Language(YAML 不是标记语言)。
使用Unity2021.3 or later。
通过Unity Package Manager安装: https://github.com/hadashiA/VYaml.git?path=VYaml.Unity/Assets/VYaml#0.13.1
ps:.yaml或者.yml是此格式的文件后缀。
二、说明
2.1 语法
- #表示单行注释,不支持多行注释
- 使用空格缩进表示层级关系,相同层级一定要对齐
- 大小写敏感
- 使用 — 来表示文档开始,使用 … 来表示文档的结束
- 使用>表示换行,使用|也表示换挡但是保留换行符
2.2 数据类型
- 对象:key-value的集合,如映射(mapping) / 哈希(hashes) / 字典(dictionary)
- 数组:按次序排列的值,如序列(sequence) / 列表(list)
- 纯量(scalars):单个不可再分的值
2.3 对象
对象键值对使用冒号结构表示key: value,冒号后面要加一个空格。也可以使用key:{k1: v1, k2: v2, …}
较复杂的对象格式,可以使用问号加一个空格表示一个复杂的key,配合一个冒号加一个空格表示一个value
2.4 数组
以 - 开头的行表示构成一个数组
2.5 纯量
string: 这是字符串
boolean: 这是布尔值
int: 这是整数
float: 这是浮点数
null: 这是Null
date: 这是时间,格式必须是yyyy-MM-dd
datetime: 这是日期,2023-07-10T09:00:00+08:00,时间和日期直接用T连接,最后使用+代表时区
2.6 引用
& 用来建立锚点,<< 表示合并到当前数据,* 用来引用锚点
common: &id001name: 张三sex: manmath:<<: *id001score: 100history: <<: *id001score: 95
相当于:
common: name: 张三sex: manmath:name: 张三sex: manscore: 100history: name: 张三sex: manscore: 95
三、使用
查看官方ReadMe
个人学习地址
通过Serialize和SerializeToString实现对象的序列化,通过Deserialize和DeserializeAsync实现字符串的反序列化。
ps:更多复杂结构请自行学习~