Looking for unity3d Keywords? Try Ask4Keywords

unity3dSingletons in der Einheit


Bemerkungen

Zwar gibt es Denkschulen, die überzeugende Argumente dafür liefern , warum der uneingeschränkte Einsatz von Singletons eine schlechte Idee ist, z. B. Singleton auf gameprogrammingpatterns.com . Es gibt jedoch Situationen , in denen Sie ein GameObject in Unity über mehrere Szenen hinweg beibehalten möchten (z. B. für nahtlose Hintergrundmusik). wobei sichergestellt ist, dass nicht mehr als eine Instanz existieren kann; ein perfekter Anwendungsfall für ein Singleton.

Durch das Hinzufügen dieses Skripts zu einem GameObject bleibt es nach der Instanziierung (z. B. durch Einfügen an einer beliebigen Stelle in einer Szene) in allen Szenen aktiv, und es wird nur eine Instanz vorhanden sein.


ScriptableObject ( UnityDoc ) -Instanzen bieten für einige Anwendungsfälle eine gültige Alternative zu Singletons. Obwohl sie die Einzelinstanzregel nicht implizit erzwingen, behalten sie ihren Status zwischen den Szenen bei und spielen gut mit dem Unity-Serialisierungsprozess. Sie fördern auch die Inversion der Kontrolle, da Abhängigkeiten durch den Editor eingefügt werden .

// MyAudioManager.cs
using UnityEngine;

[CreateAssetMenu] // Remember to create the instance in editor
public class MyAudioManager : ScriptableObject {
    public void PlaySound() {}
}
// MyGameObject.cs
using UnityEngine;

public class MyGameObject : MonoBehaviour
{
    [SerializeField]
    MyAudioManager audioManager; //Insert through Inspector

    void OnEnable()
    {
        audioManager.PlaySound();
    }
}

Lesen Sie weiter

Singletons in der Einheit Verwandte Beispiele