C# 全域類別

全域類別(也稱為具名腳本)是在 Godot 編輯器中註冊的型別,讓它們可以更方便地被使用。在 GDScript 中,這是透過在腳本頂部使用 class_name 關鍵字來實現的。本頁將說明如何在 C# 中達到相同的效果。

  • 全域類別會顯示在 新增節點建立資源 對話框中。

  • 如果一個 匯出屬性 是全域類別,屬性檢視器將限制指派,只允許該全域類別或其衍生類別的實例被指派。

全域類別是透過 [GlobalClass] 屬性來註冊的。

using Godot;

[GlobalClass]
public partial class MyNode : Node
{
}

警告

檔案名稱必須與類別名稱完全相同(區分大小寫)。例如,一個名為「MyNode」的全域類別,其檔案名稱必須是 MyNode.cs,不能是 myNode.cs

MyNode 型別將會以型別名稱註冊為全域類別。

../../../_images/globalclasses_addnode.webp

MyNode 匯出屬性的 選擇節點 視窗中,會依據指派限制篩選場景中的節點清單。

public partial class Main : Node
{
    [Export]
    public MyNode MyNode { get; set; }
}
../../../_images/globalclasses_exportednode.webp

如果自訂型別未註冊為全域類別,則指派將限制於該自訂型別所繼承的 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; }
}
../../../_images/globalclasses_createresource.webp

Stats 類別是一個註冊為全域類別的自訂資源。 Stats 型別的 匯出屬性 時,只能指派此資源型別的實例,並且屬性檢視器會讓你更容易建立與載入此型別的實例。

../../../_images/globalclasses_exportedproperty1.webp ../../../_images/globalclasses_exportedproperty2.webp

警告

Godot 編輯器會在「建立新節點」或「建立新場景」對話框中隱藏這些名稱以「Editor」開頭的自訂類別。這些類別仍可在執行時透過類別名稱實例化,但在編輯器視窗中會自動隱藏,與內建編輯器節點一樣。