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...
何時以及如何避免為任何事情使用節點
建立節點成本低,但建立節點有其限制。一個專案中可能有數以千計的節點,各司其職。當這些節點的行為越複雜,每個節點對專案效能造成的壓力就越大。
Godot 有一些更輕量的物件,這些物件可以用來建立 API,並讓節點使用。在設計如何製作專案功能時,請務必記得有這個選項。
Object :終極輕量物件,原始的 Object。必須要使用手動記憶體管理。也就是說,要建立自己的自定資料結構甚至節點結構並不困難,而且也比 Node 還要輕量。
範例: 請參考 Tree 節點。該節點可為有任意行列的目錄進行高度客製化。用來產生視覺化的資料實際上是通過一個樹狀 TreeItem 物件。
優點: 簡化 API 至更小作用域的物件有助於提升存取性,並改進迭代時間。比起使用整個 Node 函式庫,不如用一組簡短的 Object 來建立子節點,讓節點可產生與管理適當的子節點。
備註
在處理這些節點時要注意。我們可以將 Object 存到變數中,但這個參照可能會在沒有警告的情況下失效。舉例來說,若物件的建立者刪除了物件,則下次存取物件的時候便會觸發警告。
RefCounted:只比 Object 複雜一點。它會追蹤自己的參照,只要沒人參照時就自動釋放記憶體。這在大多數自訂類別需儲存資料時很有用。
範例: 請參考 FileAccess 物件。它除了不需要手動刪除外,功能和一般 Object 一樣。
優點: 與 Object 一樣。
Resource :只比 Reference 複雜一點。Resource 自帶將自身物件屬性序列化到 Godot 資源檔案中,以及反過來從資源檔案中反序列化的能力 (即保存與載入功能)。
範例: 腳本、打包場景(用於場景檔案),以及其他類型,例如每個 AudioEffect 類別。這些都可以儲存和載入,因此它們繼承自 Resource(資源)。
優點: 關於 Resource 比傳統資料儲存方法相比, 已經討論過 很多了。在使用 Resource 而不是 Node 的脈路下,主要的優點就是與屬性檢視器的相容性。雖然輕量程度相當於 Object 與 Reference,但 Resource 還可以在屬性檢視器中顯示與匯出屬性。這樣便可讓 Resource 在可用性方面來說填補子節點,也可於沒有在計劃場景中使用太多 Resource 與 Node 時提升效能。