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...
C# 全域類別
全域類別(也稱為具名腳本)是在 Godot 編輯器中註冊的型別,讓它們可以更方便地被使用。在 GDScript 中,這是透過在腳本頂部使用 class_name 關鍵字來實現的。本頁將說明如何在 C# 中達到相同的效果。
全域類別會顯示在 新增節點 與 建立資源 對話框中。
如果一個 匯出屬性 是全域類別,屬性檢視器將限制指派,只允許該全域類別或其衍生類別的實例被指派。
全域類別是透過 [GlobalClass] 屬性來註冊的。
using Godot;
[GlobalClass]
public partial class MyNode : Node
{
}
警告
檔案名稱必須與類別名稱完全相同(區分大小寫)。例如,一個名為「MyNode」的全域類別,其檔案名稱必須是 MyNode.cs,不能是 myNode.cs。
MyNode 型別將會以型別名稱註冊為全域類別。
在 MyNode 匯出屬性的 選擇節點 視窗中,會依據指派限制篩選場景中的節點清單。
public partial class Main : Node
{
[Export]
public MyNode MyNode { get; set; }
}
如果自訂型別未註冊為全域類別,則指派將限制於該自訂型別所繼承的 Godot 型別。例如,在屬性檢視器中將 MySimpleSprite2D 型別的匯出屬性指派時,只能指派 Sprite2D 及其衍生型別的實例。
public partial class MySimpleSprite2D : Sprite2D
{
}
當 [Icon] 屬性與 [GlobalClass] 屬性一起使用時,可以指定圖示的路徑,該圖示將在編輯器中顯示於此類別旁。
using Godot;
[GlobalClass, Icon("res://Stats/StatsIcon.svg")]
public partial class Stats : Resource
{
[Export]
public int Strength { get; set; }
[Export]
public int Defense { get; set; }
[Export]
public int Speed { get; set; }
}
Stats 類別是一個註冊為全域類別的自訂資源。 Stats 型別的 匯出屬性 時,只能指派此資源型別的實例,並且屬性檢視器會讓你更容易建立與載入此型別的實例。
警告
Godot 編輯器會在「建立新節點」或「建立新場景」對話框中隱藏這些名稱以「Editor」開頭的自訂類別。這些類別仍可在執行時透過類別名稱實例化,但在編輯器視窗中會自動隱藏,與內建編輯器節點一樣。