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)模式支持。