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
{
}
当与 [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; }
}
Stats 类是一个注册为全局类的自定义资源。导出属性 类型为 Stats 的属性将仅允许分配此资源类型的实例,并且检查器将允许你轻松创建和加载此类型的实例。
警告
Godot 编辑器会在“创建新节点”或“创建新场景”对话框中隐藏名称以 “Editor” 为前缀的自定义类。这些类仍然可以通过类名在运行时实例化,但编辑器会自动在这些窗口中隐藏它们,就像隐藏 Godot 编辑器内部使用的内置编辑器节点一样。