Skip to content

Commit

Permalink
Merge pull request #8852 from 31/dev/31/singleton-cs
Browse files Browse the repository at this point in the history
singletons_autoload.rst: add C# example similar to "Global Variable"
  • Loading branch information
mhilbrunner authored Feb 4, 2024
2 parents dedb444 + a4e958c commit 62d5d6c
Showing 1 changed file with 27 additions and 0 deletions.
27 changes: 27 additions & 0 deletions tutorials/scripting/singletons_autoload.rst
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand Down

0 comments on commit 62d5d6c

Please sign in to comment.