Variant类
关于
Variant 是 Godot 中最重要的数据类型,也是引擎中最重要的类。Variant仅占用20个字节,并且几乎可以在其中存储任何引擎数据类型。Variant 很少用于长时间保存信息,而主要用于通信、编辑、序列化和移动数据。
一个Variant可以:
- 存储几乎所有数据类型
- 在许多Variant对象之间执行操作(GDScript使用Variant作为其原子/原生数据类型)。
- 被散列,因此可以快速将其与其他Variant对象进行比较
- 用于在数据类型之间安全地转换
- 用于抽象调用方法及其参数(Godot通过Variant对象导出其所有函数)
- 用于推迟调用或在线程之间交换数据。
- 被序列化为二进制并存储到磁盘,或通过网络传输。
- 被序列化为文本,并将其用于打印值和可编辑的设置。
- 用作导出的属性,因此编辑器可以对其进行普通地编辑。
- 用于字典、数组、解析器等。
基本上,由于有了Variant类,编写Godot本身就容易得多,因为它可以轻松完成C++不常见的高度动态的结构。今天就成为Variant的朋友吧。
参考:
容器:字典(Dictionary)和数组(Array)
他们都是使用 Variant 实现的。字典可以将用作键的任何数据类型与任何其他数据类型进行匹配。数组仅包含Variant数组。当然,Variant还可以在内部容纳一个Dictionary和一个Array,从而使其更加灵活。
对容器的修改将修改对该容器的所有引用。如果需要多线程访问,则应创建一个互斥锁以将其锁定。
Godot 3.0 删除了对容器的写时拷贝(COW)模式支持。