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.

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
{
}

当与 [GlobalClass] 属性结合时,[Icon] 属性允许提供该类被显示在编辑器中时要显示的图标的路径。

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” 为前缀的自定义类。这些类仍然可以通过类名在运行时实例化,但编辑器会自动在这些窗口中隐藏它们,就像隐藏 Godot 编辑器内部使用的内置编辑器节点一样。