Up to date
This page is up to date for Godot 4.2
.
If you still find outdated information, please open an issue.
Variant 類別¶
關於¶
Variant 是 Godot 中最重要的一個資料型別,同時也是引擎中最重要的類別。一個只佔 20 位元組的 Variant 可以用來儲存幾乎所有的引擎資料型別。Variant 很少用來長時間儲存資料,主要都是用來進行通訊、編輯、序列化以移動資料。
Variant 可以:
保存幾乎所有資料型別
在多個 Variant 進行操作 (GDScript 使用 Variant 作為其不可部分完成與原生的資料型別)。
可雜湊,這樣一來便能快速與其他 Variant 進行比對
在各個資料型別間安全地轉換
用來抽象呼叫方法以及其參數 (Godot 以 Variant 來匯出其所有的方法)
用來延遲呼叫或在執行緒間移動資料。
可序列化為二進位,並儲存於硬碟上或經由網路傳輸。
可序列化為文字,並用來印出數值或作為可編輯的設定。
可當作匯出的屬性使用,這樣編輯器便能進行一般地編輯。
可用於字典、陣列、剖析器…等。
基本上,多虧有了 Variant,撰寫 Godot 本身便容易得多,因為使用 Variant 就能輕鬆地完成 C++ 中所不常見的高度動態結構。馬上就來熟悉熟悉 Variant 吧。
參考資料:¶
容器:字典 (Dictionary) 與陣列 (Array)¶
這兩種容器都是通過 Variant 來實作的。Dictionary 可以將所有作為索引鍵使用的資料型別與另一個資料型別做比對。Array 內則儲存的時 Variant 的陣列。當然,Variant 內也可以再儲存另一個 Dictionary 與 Array,來達到更佳的靈活性。
修改容器也會修改所有該容器的參照。當有需要多執行緒存取時則應該新增 Mutex 來進行鎖定。
自 Godot 3.0 起,已刪除容器的寫入時複製 (COW, Copy-on-Write) 模式。