Wie erstellt und nutzt man ein Singleton in Unity?

Werbung Talescape

Ein Singleton in Unity zu erstellen ist ziemlich einfach. Es funktioniert im Grunde genommen relativ ähnlich zu dem Vorgehen in Vanilla-C#. Mit dem kleinen Unterschied, dass wir uns im Grunde genommen nicht um die Initialisierung Sorgen machen müssen (zumindest bei MonoBehaviours).

Zunächst erstellen wir eine statische Variable _instance. Zusätzlich eine Property Instance. Diese nutzen wir später, um auf den Singleton zugreifen zu können. Innerhalb der Awake-Methode des MonoBehaviours geben wir der _instance-Variable dann die Referenz auf die Instanz der Klasse mit.

using UnityEngine;

public class MyAwesomeClass : MonoBehaviour
{
    private static MyAwesomeClass _instance;

    // Add other class properties here...

    public static MyAwesomeClass Instance
    {
        get {
            if (_instance == null) {
                Debug.LogError("MyAwesomeClass not instantiated.");
            }

            return _instance;
        }
    }

    private void Awake()
    {
        _instance = this;
    }

    // Add other class methods here...

    public void SomeMethod()
    {
        Debug.Log("It works.");
    }
}

Zugreifen könnt Ihr auf die Methoden und Properties des Singletons dann ganz simpel. Die Klasse steht im globalen Namensraum zur Verfügung.

MyAwesomeClass.Instance.SomeMethod();

Wichtig: Achtet darauf, wann Ihr auf den Singleton zugreift. Die Awake-Methode läuft zwar relativ früh innerhalb eines Game-Loops, allerdings kann es dennoch passieren, dass ihr versucht zu früh auf die Instanz zuzugreifen. Das passiert bei einer reinen C#-Lösung natürlich nicht.

Noch keine Kommentare vorhanden.