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