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
 
+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
 other node in the scene tree. In fact, if you look at the running scene tree,
 you'll see the autoloaded nodes appear: