Pārlūkot izejas kodu

Merge pull request #8852 from 31/dev/31/singleton-cs

singletons_autoload.rst: add C# example similar to "Global Variable"
Max Hilbrunner 1 gadu atpakaļ
vecāks
revīzija
62d5d6cddb
1 mainītis faili ar 27 papildinājumiem un 0 dzēšanām
  1. 27 0
      tutorials/scripting/singletons_autoload.rst

+ 27 - 0
tutorials/scripting/singletons_autoload.rst

@@ -94,6 +94,33 @@ be accessed directly in GDScript, without requiring ``get_node()``:
 
 
    PlayerVariables.health -= 10
    PlayerVariables.health -= 10
 
 
+The **Enable** column has no effect in C# code. However, if the singleton is a
+C# script, a similar effect can be achieved by including a static property
+called ``Instance`` and assigning it in ``_Ready()``:
+
+.. tabs::
+ .. code-tab:: csharp
+
+    public partial class PlayerVariables : Node
+    {
+        public static PlayerVariables Instance { get; private set; }
+
+        public int Health { get; set; }
+
+        public override void _Ready()
+        {
+            Instance = this;
+        }
+    }
+
+This allows the singleton to be accessed from C# code without ``GetNode()`` and
+without a typecast:
+
+.. tabs::
+ .. code-tab:: csharp
+
+    PlayerVariables.Instance.Health -= 10;
+
 Note that autoload objects (scripts and/or scenes) are accessed just like any
 Note that autoload objects (scripts and/or scenes) are accessed just like any
 other node in the scene tree. In fact, if you look at the running scene tree,
 other node in the scene tree. In fact, if you look at the running scene tree,
 you'll see the autoloaded nodes appear:
 you'll see the autoloaded nodes appear: