Looking for unity3d Keywords? Try Ask4Keywords

unity3dSingletons en la unidad


Observaciones

Si bien hay escuelas de pensamiento que presentan argumentos convincentes sobre por qué el uso sin restricciones de Singletons es una mala idea, por ejemplo, Singleton en gameprogrammingpatterns.com , hay ocasiones en las que es posible que desee conservar un GameObject en Unity en varias escenas (por ejemplo, para una música de fondo perfecta) mientras se asegura que no puede existir más de una instancia; un caso de uso perfecto para un Singleton.

Al agregar este script a un GameObject, una vez que se haya creado una instancia (por ejemplo, al incluirlo en cualquier lugar de una escena) permanecerá activo en todas las escenas, y solo existirá una instancia.


Las instancias de ScriptableObject ( UnityDoc ) proporcionan una alternativa válida a Singletons para algunos casos de uso. Si bien no aplican de manera implícita la regla de instancia única, conservan su estado entre escenas y juegan bien con el proceso de serialización de Unity. También promueven la inversión de control a medida que las dependencias se inyectan a través del editor .

// 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();
    }
}

Otras lecturas

Singletons en la unidad Ejemplos relacionados