二进制序列化API¶
介绍¶
Godot有一个基于变量的简单序列化API。它用于高效地将数据类型转换为字节数组。此API用于函数 get_var
和 store_var
属于 文件 以及数据包API PacketPeer . 此格式不用于二进制场景和资源。
数据包规范¶
数据包设计为始终填充到4个字节。所有值都是小endian编码的。所有数据包都有一个表示整数的4字节头,指定数据类型:
类型 |
价值 |
---|---|
0 |
无效的 |
1 |
布尔 |
2 |
整数 |
3 |
浮动 |
4 |
一串 |
5 |
矢量2 |
6 |
矩形2 |
7 |
矢量3 |
8 |
变压器2D |
9 |
飞机 |
10 |
夸脱 |
11 |
AABB |
12 |
基础 |
13 |
转型 |
14 |
颜色 |
15 |
节点路径 |
16 |
摆脱 |
17 |
对象 |
18 |
词典 |
19 |
数组 |
20 |
原始数组 |
21 |
数组数组 |
22 |
实数数组 |
23 |
字符串数组 |
24 |
矢量2阵列 |
25 |
矢量3阵列 |
26 |
颜色数组 |
27 |
最大值 |
下面是实际的数据包内容,每种类型的数据包都有所不同:
0:空¶
8: Transform2D¶
抵消 |
伦恩 |
类型 |
描述 |
---|---|---|---|
4 |
4 |
浮标 |
[0] [0] |
8 |
4 |
浮标 |
[0] [1] |
12 |
4 |
浮标 |
[1] [0] |
16 |
4 |
浮标 |
[1] [1] |
20 |
4 |
浮标 |
[2] [0] |
24 |
4 |
浮标 |
[2] [1] |
12: Basis¶
抵消 |
伦恩 |
类型 |
描述 |
---|---|---|---|
4 |
4 |
浮标 |
[0] [0] |
8 |
4 |
浮标 |
[0] [1] |
12 |
4 |
浮标 |
[0] [2] |
16 |
4 |
浮标 |
[1] [0] |
20 |
4 |
浮标 |
[1] [1] |
24 |
4 |
浮标 |
[1] [2] |
28 |
4 |
浮标 |
[2] [0] |
32 |
4 |
浮标 |
[2] [1] |
36 |
4 |
浮标 |
[2] [2] |
13: Transform¶
抵消 |
伦恩 |
类型 |
描述 |
---|---|---|---|
4 |
4 |
浮标 |
[0] [0] |
8 |
4 |
浮标 |
[0] [1] |
12 |
4 |
浮标 |
[0] [2] |
16 |
4 |
浮标 |
[1] [0] |
20 |
4 |
浮标 |
[1] [1] |
24 |
4 |
浮标 |
[1] [2] |
28 |
4 |
浮标 |
[2] [0] |
32 |
4 |
浮标 |
[2] [1] |
36 |
4 |
浮标 |
[2] [2] |
40 |
4 |
浮标 |
[3] [0] |
44 |
4 |
浮标 |
[3] [1] |
48 |
4 |
浮标 |
[3] [2] |
15: NodePath¶
抵消 |
伦恩 |
类型 |
描述 |
---|---|---|---|
4 |
4 |
整数 |
字符串长度或新格式(VAL&0x8000000!=0,名称计数=val&0x7fffffff) |
对于新格式:¶
抵消 |
伦恩 |
类型 |
描述 |
---|---|---|---|
4 |
4 |
整数 |
子名称计数 |
8 |
4 |
整数 |
标志(绝对:VAL&1!= 0) |
对于每个名称和子名称
抵消 |
伦恩 |
类型 |
描述 |
---|---|---|---|
X+ 0 |
4 |
整数 |
字符串长度 |
X+ 4 |
X |
字节 |
UTF-8编码字符串 |
每个名称字符串都被填充到4个字节。
18: Dictionary¶
抵消 |
伦恩 |
类型 |
描述 |
---|---|---|---|
4 |
4 |
整数 |
val&0x7fffffff=元素,val&0x8000000=共享(bool) |
接下来是,对于“元素”的数量,使用相同格式的键和值对,一对接一对。
19: Array¶
抵消 |
伦恩 |
类型 |
描述 |
---|---|---|---|
4 |
4 |
整数 |
val&0x7fffffff=元素,val&0x8000000=共享(bool) |
接下来是,对于“元素”的数量,使用相同的格式,值一个接一个。
21: PoolIntArray¶
抵消 |
伦恩 |
类型 |
描述 |
---|---|---|---|
4 |
4 |
整数 |
数组长度(整数) |
8..8+length*4 |
4 |
整数 |
32位有符号整数 |
22: PoolRealArray¶
抵消 |
伦恩 |
类型 |
描述 |
---|---|---|---|
4 |
4 |
整数 |
数组长度(浮点数) |
8..8+length*4 |
4 |
整数 |
32位IEE 754浮点 |
23: PoolStringArray¶
抵消 |
伦恩 |
类型 |
描述 |
---|---|---|---|
4 |
4 |
整数 |
数组长度(字符串) |
对于每个字符串:
抵消 |
伦恩 |
类型 |
描述 |
---|---|---|---|
X+ 0 |
4 |
整数 |
字符串长度 |
X+ 4 |
X |
字节 |
UTF-8编码字符串 |
每个字符串被填充到4个字节。
24: PoolVector2Array¶
抵消 |
伦恩 |
类型 |
描述 |
---|---|---|---|
4 |
4 |
整数 |
数组长度 |
8..8+length*8 |
4 |
浮标 |
X坐标 |
8..12+length*8 |
4 |
浮标 |
Y坐标 |
25: PoolVector3Array¶
抵消 |
伦恩 |
类型 |
描述 |
---|---|---|---|
4 |
4 |
整数 |
数组长度 |
8..8+length*12 |
4 |
浮标 |
X坐标 |
8..12+length*12 |
4 |
浮标 |
Y坐标 |
8..16+length*12 |
4 |
浮标 |
Z坐标 |
26: PoolColorArray¶
抵消 |
伦恩 |
类型 |
描述 |
---|---|---|---|
4 |
4 |
整数 |
数组长度 |
8..8+length*16 |
4 |
浮标 |
红色(0..1) |
8..12+length*16 |
4 |
浮标 |
绿色(0..1) |
8..16+length*16 |
4 |
浮标 |
蓝色(0..1) |
8..20+length*16 |
4 |
浮标 |
α(0..1) |