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