Wie erstellt und nutzt man ein Singleton in Unity?
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.