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

参考: