# SoundsGoodManager

`SoundsGoodManager` expone **métodos estáticos** que afectan a todo el audio reproducido con *Sounds Good*.\
Sirve para:

* Ajustar **volúmenes de salidas de audio** en tiempo de ejecución.
* **Pausar, reanudar o detener** cualquier sonido/música por su `id` o de forma masiva.
* Mantener un **pool** de `AudioSource` eficiente.
* Persistir volúmenes de las **salidas de audio** en `PlayerPrefs`.

***

### 📌 Tabla resumen

| Método                                | Tipo de retorno | Descripción breve                                            |
| ------------------------------------- | --------------- | ------------------------------------------------------------ |
| ChangeOutputVolume(`Output`, `float`) | `void`          | Ajusta el volumen (0 – 1) del grupo indicado.                |
| ChangeOutputVolume(`string`, `float`) | `void`          | Igual que el anterior, pero por nombre de salida.            |
| PauseAll(`float`)                     | `void`          | Pausa **todos** los sonidos y músicas (`fade-out` opcional). |
| Pause(`string`, `float`)              | `void`          | Pausa el audio que tenga ese `id`.                           |
| ResumeAll(`float`)                    | `void`          | Reanuda todo lo que estuviera en pausa (`fade-in` opcional). |
| Resume(`string`, `float`)             | `void`          | Reanuda el audio con ese `id`.                               |
| StopAll(`float`)                      | `void`          | Detiene todos los audios (`fade-out` opcional).              |
| Stop(`string`, `float`)               | `void`          | Detiene el audio con ese `id`.                               |

***

### 📘 Descripción detallada

#### `void` ChangeOutputVolume(`Output` output, `float` value)

Ajusta el fader del `AudioMixerGroup` ligado a `output` y guarda el valor en `PlayerPrefs`.

***

#### `void` ChangeOutputVolume(`string` outputName, `float` value)

Misma operación, pero usando el **nombre** exacto del grupo (por si no quieres depender del `enum Output`).

***

#### `void` PauseAll(`float fadeOutTime = 0)`

Aplica un `fade-out` de `fadeOutTime` segundos y **pausa** todos los `Sound`, `Music`, `Playlist` y `DynamicMusic`.

***

#### `void` Pause(`string id, float fadeOutTime = 0)`

Pausa el audio cuyo `SetId("id")` coincida, con `fade-out` opcional.

***

#### `void` ResumeAll(`float fadeInTime = 0)`

Reanuda cualquier audio que estuviera pausado, aplicando `fade-in` si se indica.

***

#### `void` Resume(`string id, float fadeInTime = 0)`

Reanuda el audio identificado por `id`, siempre que esté en pausa.

***

#### `void` StopAll(`float fadeOutTime = 0)`

Detiene (no solo pausa) **todos** los audios; si `fadeOutTime` > 0 se desvanece antes de parar.

***

#### `void` Stop(`string id, float fadeOutTime = 0)`

Detiene el audio con el `id` dado. Útil para loops o música que quieras cortar a demanda.

***
