Singleton
Clase 25 de 32 • Curso de Programación 2D con Unity: Intermedio
Resumen
¿Qué es un Singleton y cuándo usarlo?
El Singleton es un patrón de diseño que asegura que una clase solo tenga una instancia mientras se ejecuta un programa. Imagínate un sistema de audio que, en un juego, deba reproducir sonidos en diferentes contextos y escenas. Si este sistema se multiplicara en distintas instancias, manejar los sonidos se volvería caótico. Por eso, el uso de un Singleton asegura una coordinación consistente, evitando solapamientos y asegurando que los sonidos sean manejados por una única fuente. Veamos cómo implementarlo.
¿Cómo implementar un Singleton en Unity con C#?
Para implementar un Singleton en Unity, seguimos estos pasos:
-
Crear el Script: Dentro de tu proyecto Unity, crea una carpeta llamada
singletons
enscripts
y dentro de ella, un script de C# llamadoSoundManager
. -
Definir el Singleton en C#: Abre
Visual Studio
y define el Singleton.public class SoundManager : MonoBehaviour { public static SoundManager instance; // Punto de acceso global void Awake() { if (instance != null) { Destroy(gameObject); } else { instance = this; DontDestroyOnLoad(gameObject); // Preservar durante cambios de escenas } } }
-
Configurar la Clase para Reproducir Sonidos:
- Declara un
AudioSource
y unAudioClip
.
private AudioSource audioSource; public AudioClip shoot;
- En el
Start
, inicializa elaudioSource
.
void Start() { audioSource = GetComponent<AudioSource>(); }
- Crea un método para reproducir sonido.
public void PlayShoot() { audioSource.PlayOneShot(shoot); }
- Declara un
-
Configurar en Unity:
- Asegúrate de tener un
AudioSource
en tu escena y asocia elAudioClip
. - Desactiva las opciones
Play On Awake
yLoop
.
- Asegúrate de tener un
¿Cómo usar el Singleton para disparos en el juego?
Para integrar el disparo de un personaje usando el sistema desarrollado:
-
Modificar el Script del Player: En el script
PlayerController
, añade un métodoOnFire
que interactúe con elSoundManager
.void OnFire() { SoundManager.instance.PlayShoot(); }
-
Configurar Input Actions:
- Accede a las configuraciones de
Input Action
y agrega unbinding
a la acciónfire
, vinculando la tecla "espacio".
- Accede a las configuraciones de
-
Verificar la Funcionalidad:
- Prueba en el
Play mode
de Unity que el disparo ocurre al presionar "espacio" y ajusta las configuraciones si es necesario.
- Prueba en el
El uso de un Singleton en este contexto facilita que, sin importar la escena seleccionada, el sistema de audio funcione coherentemente y se mantenga durante todo el juego, mejorando la experiencia del jugador.
Consejo adicional:
Convierte tu GameManager
existente en un Singleton, lo que te permitirá acceder directamente a la instancia de GameManager
desde otros scripts, mejorando la eficiencia y manejo del estado global en tu juego. ¡Sigue explorando y practicando! Unity te ofrece infinitas posibilidades para desarrollar tus habilidades en programación de videojuegos.