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