Преглед изворни кода

Add page about using global classes in C# (#6740)

Co-authored-by: Max Hilbrunner <[email protected]>
Raul Santos пре 2 година
родитељ
комит
27e7f8433c

+ 4 - 1
tutorials/scripting/c_sharp/c_sharp_exports.rst

@@ -263,6 +263,8 @@ Since Godot 4.0, nodes can be directly exported without having to use NodePaths.
     [Export]
     public Node Node { get; set; }
 
+Custom node classes can also be used, see :ref:`doc_c_sharp_global_classes`.
+
 Exporting NodePaths like in Godot 3.x is still possible, in case you need it:
 
 .. code-block:: csharp
@@ -296,7 +298,8 @@ Therefore, if you specify a type derived from Resource such as:
     private AnimationNode Resource;
 
 The drop-down menu will be limited to AnimationNode and all
-its inherited classes.
+its inherited classes. Custom resource classes can also be used,
+see :ref:`doc_c_sharp_global_classes`.
 
 It must be noted that even if the script is not being run while in the
 editor, the exported properties are still editable. This can be used

+ 52 - 0
tutorials/scripting/c_sharp/c_sharp_global_classes.rst

@@ -0,0 +1,52 @@
+.. _doc_c_sharp_global_classes:
+
+C# global classes
+=================
+
+Global classes (also known as named scripts) are types registered in Godot's editor so they can be used
+more conveniently. These classes show up in the *Add Node* and *Create Resource* dialogs,
+and :ref:`exported properties <doc_c_sharp_exports>` are restricted to instances of the global class or derived classes.
+Global classes are registered with the ``[GlobalClass]`` attribute.
+
+.. code-block:: csharp
+
+    using Godot;
+
+    [GlobalClass]
+    public partial class MyNode : Node
+    {
+    }
+
+The ``MyNode`` type will be registered as a global class with the same name as the type's name.
+
+.. image:: img/globalclasses_addnode.webp
+
+The ``[Icon]`` attribute also allows to provide the path to an icon so it can
+be used as the class' icon in the editor.
+
+.. code-block:: csharp
+
+    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; }
+    }
+
+.. image:: img/globalclasses_createresource.webp
+
+The ``Stats`` class is a custom resource registered as a global class. :ref:`Exporting properties <doc_c_sharp_exports>` of the
+type ``Stats`` will only allow instances of this resource type to be assigned, and the inspector
+will let you create and load instances of this type easily.
+
+.. image:: img/globalclasses_exportedproperty1.webp
+
+.. image:: img/globalclasses_exportedproperty2.webp

BIN
tutorials/scripting/c_sharp/img/globalclasses_addnode.webp


BIN
tutorials/scripting/c_sharp/img/globalclasses_createresource.webp


BIN
tutorials/scripting/c_sharp/img/globalclasses_exportedproperty1.webp


BIN
tutorials/scripting/c_sharp/img/globalclasses_exportedproperty2.webp


+ 1 - 0
tutorials/scripting/c_sharp/index.rst

@@ -12,4 +12,5 @@ C#
    c_sharp_variant
    c_sharp_signals
    c_sharp_exports
+   c_sharp_global_classes
    c_sharp_style_guide