該避免一直使用節點的情況與如何避免

建立節點成本低,但建立節點有其限制。一個專案中可能有數以千計的節點,各司其職。當這些節點的行為越複雜,每個節點對專案效能造成的壓力就越大。

Godot 有一些更輕量的物件,這些物件可以用來建立 API,並讓節點使用。在設計如何製作專案功能時,請務必記得有這個選項。

  1. Object :終極輕量物件,原始的 Object。必須要使用手動記憶體管理。也就是說,要建立自己的自定資料結構甚至節點結構並不困難,而且也比 Node 還要輕量。

    • 範例: 請參考 Tree 節點。該節點可為有任意行列的目錄進行高度客製化。用來產生視覺化的資料實際上是通過一個樹狀 TreeItem 物件。

    • Advantages: Simplifying one's API to smaller scoped objects helps improve its accessibility and improve iteration time. Rather than working with the entire Node library, one creates an abbreviated set of Objects from which a node can generate and manage the appropriate sub-nodes.

    備註

    在處理這些節點時要注意。我們可以將 Object 存到變數中,但這個參照可能會在沒有警告的情況下失效。舉例來說,若物件的建立者刪除了物件,則下次存取物件的時候便會觸發警告。

  2. Reference :只稍微比 Object 複雜一點。Reference 會追蹤自己的參照,然後只在沒有任何參照到自己時才刪除載入的記憶體。這種類別適用於大多數自定類別中需要資料的情況。

    • 範例: 請參考 File 物件。該物件的功能除了不需要手動刪除以外,就像一般的 Object 一樣。

    • 優點: 與 Object 一樣。

  3. Resource :只比 Reference 複雜一點。Resource 自帶將自身物件屬性序列化到 Godot 資源檔案中,以及反過來從資源檔案中反序列化的能力 (即保存與載入功能)。

    • 範例: Script, PackedScene (用於場景檔案) 與其他如各個 AudioEffec 類別之類的型別。這些類別都可以載入與保存,因此都是從 Resource 繼承來的。

    • 優點: 關於 Resource 比傳統資料儲存方法相比, 已經討論過 很多了。在使用 Resource 而不是 Node 的脈絡下,主要的優點就是與屬性面板的相容性。雖然輕量程度相當於 Object 與 Reference,但 Resource 還可以在屬性面板中顯示與匯出屬性。這樣便可讓 Resource 在可用性方面來說填補子節點,也可於沒有在計劃場景中使用太多 Resource 與 Node 時提升效能。