Sistema de configuración y opciones en Unity (Settings: audio, video y controles)

Un videojuego indie puede tener excelentes mecánicas, pero si el jugador no puede ajustar el volumen, la resolución o los controles, la experiencia se ve seriamente afectada. Por eso, el sistema de configuración es una pieza clave en cualquier proyecto que aspire a verse profesional.
En este artículo aprenderás cómo crear un sistema de configuración y opciones en Unity, abarcando audio, video y controles, usando una arquitectura clara, reutilizable y alineada con los sistemas que ya hemos construido en la serie.
Por qué un sistema de Settings es esencial en juegos indie
El menú de opciones permite:
- Adaptar el juego a diferentes dispositivos
- Dar control al jugador sobre su experiencia
- Reducir frustración y abandono
- Elevar la percepción de calidad del proyecto
Incluso juegos pequeños se benefician enormemente de un buen sistema de configuración.
Errores comunes al implementar opciones
Algunos problemas frecuentes en proyectos indie:
- Opciones que no se guardan
- Configuraciones aplicadas solo temporalmente
- Lógica de UI mezclada con lógica de sistema
La clave es separar claramente la interfaz del manejo de datos.
Estructura recomendada para Settings
Una estructura simple y efectiva:
Settings
├─ SettingsManager
├─ AudioSettings
├─ VideoSettings
└─ ControlSettings
Esto permite escalar las opciones sin perder orden.
SettingsManager: control central de configuraciones
El SettingsManager se encarga de cargar, aplicar y guardar opciones:
using UnityEngine;
public class SettingsManager : MonoBehaviour
{
public static SettingsManager Instance;
private void Awake()
{
if (Instance == null)
{
Instance = this;
DontDestroyOnLoad(gameObject);
LoadSettings();
}
else
{
Destroy(gameObject);
}
}
public void SaveSettings()
{
PlayerPrefs.Save();
}
private void LoadSettings()
{
AudioSettings.Apply();
VideoSettings.Apply();
ControlSettings.Apply();
}
}
Este enfoque centraliza la responsabilidad y evita duplicaciones.
Configuración de audio
El sistema de audio suele incluir:
- Volumen de música
- Volumen de efectos
public static class AudioSettings
{
public static void SetMusicVolume(float value)
{
PlayerPrefs.SetFloat("MusicVolume", value);
AudioManager.Instance.musicSource.volume = value;
}
public static void Apply()
{
float volume = PlayerPrefs.GetFloat("MusicVolume", 1f);
AudioManager.Instance.musicSource.volume = volume;
}
}
Esto permite guardar y restaurar preferencias fácilmente.
Configuración de video
Opciones comunes de video:
- Resolución
- Pantalla completa
- Calidad gráfica
public static class VideoSettings
{
public static void SetFullscreen(bool value)
{
Screen.fullScreen = value;
PlayerPrefs.SetInt("Fullscreen", value ? 1 : 0);
}
public static void Apply()
{
bool fullscreen = PlayerPrefs.GetInt("Fullscreen", 1) == 1;
Screen.fullScreen = fullscreen;
}
}
Unity facilita la gestión de estas opciones incluso para equipos pequeños.
Configuración de controles
En juegos indie, lo más común es:
- Sensibilidad
- Inversión de ejes
public static class ControlSettings
{
public static void SetSensitivity(float value)
{
PlayerPrefs.SetFloat("Sensitivity", value);
}
public static float GetSensitivity()
{
return PlayerPrefs.GetFloat("Sensitivity", 1f);
}
public static void Apply() { }
}
Estos valores pueden usarse directamente en el sistema de input.
Integración con UI
La UI de opciones solo debe:
- Leer valores actuales
- Llamar métodos del sistema
- No contener lógica de negocio
Esto mantiene el sistema limpio y fácil de mantener.
Buenas prácticas para Settings en Unity
- Usa PlayerPrefs solo para datos simples
- Aplica opciones al iniciar el juego
- Centraliza el guardado
- Evita lógica en botones de UI
Un buen sistema de configuración se nota cuando no causa problemas.
Opciones pequeñas, impacto grande
Un sistema de configuración bien implementado es una señal clara de madurez en un videojuego indie. Permite al jugador adaptar la experiencia y demuestra atención al detalle.
Unity ofrece todo lo necesario; la diferencia está en cómo estructuras el sistema.


