二进制序列化 API

前言

File 的 get_varstore_var 函数, 以及 PacketPeer 的包API. 这种格式 用于二进制场景和资源.

包规范

该数据包被设计为总是被填充到4个字节. 所有的值都是小端编码的. 所有数据包都有一个4字节的头, 代表一个整数, 指定数据的类型. 最低值的两个字节用于确定类型,而最高值的两个字节包含标志:

  1. 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个字节.

24: PoolVector2Array

25: PoolVector3Array

26: PoolColorArray