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
singletonsenscriptsy dentro de ella, un script de C# llamadoSoundManager. -
Definir el Singleton en C#: Abre
Visual Studioy 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
AudioSourcey 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
AudioSourceen tu escena y asocia elAudioClip. - Desactiva las opciones
Play On AwakeyLoop.
- 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étodoOnFireque interactúe con elSoundManager.void OnFire() { SoundManager.instance.PlayShoot(); } -
Configurar Input Actions:
- Accede a las configuraciones de
Input Actiony agrega unbindinga la acciónfire, vinculando la tecla "espacio".
- Accede a las configuraciones de
-
Verificar la Funcionalidad:
- Prueba en el
Play modede 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.