- 二进制序列化 API
- 前言
- 包规范
- 0: null
- 1: bool
- 2: int
- 3: float
- 4: String
- 5: Vector2
- 6: Rect2
- 7: Vector3
- 8: Transform2D
- 9: Plane
- 10: Quat
- 11: AABB
- 12: Basis
- 13: Transform
- 14: Color
- 15: NodePath
- 16: RID (暂不支持)
- 17: Object (暂不支持)
- 18: Dictionary
- 19: Array
- 20: PoolByteArray
- 21: PoolIntArray
- 22: PoolRealArray
- 23: PoolStringArray
- 24: PoolVector2Array
- 25: PoolVector3Array
- 26: PoolColorArray
二进制序列化 API
前言
File 的 get_var 和 store_var 函数, 以及 PacketPeer 的包API. 这种格式 不 用于二进制场景和资源.
包规范
该数据包被设计为总是被填充到4个字节. 所有的值都是小端编码的. 所有数据包都有一个4字节的头, 代表一个整数, 指定数据的类型. 最低值的两个字节用于确定类型,而最高值的两个字节包含标志:
base_type = val & 0xFFFF;flags = val >> 16;
(offset - 4) * 2 + 4 . “float” 类型本身总是使用双精度.
0: null
1: bool
2: int
如果没有设置标志(flags == 0),整数将作为32位整数发送:
ENCODE_FLAG_64 被设置(flags & 1 == 1),则整数被发送为64位整数:
3: float
如果没有设置flags(flags == 0),浮点数将作为32位单精度发送:
ENCODE_FLAG_64 被设置(flags & 1 == 1),浮点数将作为64位双精度数字发送:
4: String
该字段会被填充成4个字节.
5: Vector2
6: Rect2
7: Vector3
8: Transform2D
9: Plane
10: Quat
11: AABB
12: Basis
13: Transform
14: Color
15: NodePath
对于旧格式:
填充到4个字节.
对于新格式:
对于每个名称和子名称 每个名称字符串都会填充到4个字节.
16: RID (暂不支持)
17: Object (暂不支持)
18: Dictionary
elements 的数量, 使用相同的格式, 一个接一个地使用密钥和值对.
19: Array
elements 的数量, 使用相同的格式一个接一个地输出值.
20: PoolByteArray
数组数据填充为4个字节.
21: PoolIntArray
22: PoolRealArray
23: PoolStringArray
对于每个字符串: 每个字符串填充为4个字节.
