# Métodos

## 📌 Tabla resumen

<table><thead><tr><th width="266">Método</th><th width="105">Tipo</th><th>Descripción breve</th></tr></thead><tbody><tr><td>Playlist()</td><td><code>Playlist</code></td><td>Crea una playlist vacía.</td></tr><tr><td>Playlist(<code>Track[]</code>)</td><td><code>Playlist</code></td><td>Crea una playlist a partir de un array de <code>Track</code> en el orden indicado.</td></tr><tr><td>Playlist(<code>string[]</code>)</td><td><code>Playlist</code></td><td>Crea una playlist a partir de un array de tags.</td></tr><tr><td>SetVolume(<code>float</code>)</td><td><code>Playlist</code></td><td>Define el volumen de la playlist antes de reproducirla.</td></tr><tr><td>SetHearDistance(<code>float</code>, <code>float</code>)</td><td><code>Playlist</code></td><td>Establece la distancia mínima y máxima a la que se oye la playlist.</td></tr><tr><td>SetVolumeRolloffCurve(<code>VolumeRolloffCurve</code>)</td><td><code>Playlist</code></td><td>Selecciona el tipo de atenuación del volumen con la distancia.</td></tr><tr><td>SetCustomVolumeRolloffCurve(<code>AnimationCurve</code>)</td><td><code>Playlist</code></td><td>Aplica una curva de atenuación personalizada.</td></tr><tr><td>ChangeVolume(<code>float</code>, <code>float</code>)</td><td><code>void</code></td><td>Cambia el volumen durante la reproducción (con lerp opcional).</td></tr><tr><td>SetPitch(<code>float</code>)</td><td><code>Playlist</code></td><td>Ajusta el pitch de todos los clips.</td></tr><tr><td>SetDopplerLevel(<code>float</code>)</td><td><code>Playlist</code></td><td>Define el nivel de efecto Doppler.</td></tr><tr><td>SetId(<code>string</code>)</td><td><code>Playlist</code></td><td>Asigna un identificador único a la playlist.</td></tr><tr><td>SetLoop(<code>bool</code>)</td><td><code>Playlist</code></td><td>Activa o desactiva la reproducción en bucle.</td></tr><tr><td>SetPlaylist(<code>Track[]</code>)</td><td><code>Playlist</code></td><td>Sustituye la lista de reproducción por un array de <code>Track</code>.</td></tr><tr><td>SetPlaylist(<code>string[]</code>)</td><td><code>Playlist</code></td><td>Sustituye la lista de reproducción por un array de tags.</td></tr><tr><td>AddToPlaylist(<code>Track</code>)</td><td><code>void</code></td><td>Añade un <code>Track</code> al final de la playlist en tiempo de ejecución.</td></tr><tr><td>AddToPlaylist(<code>string</code>)</td><td><code>void</code></td><td>Añade un tag de pista al final de la playlist en tiempo de ejecución.</td></tr><tr><td>Shuffle()</td><td><code>void</code></td><td>Baraja las pistas actuales y actualiza el orden de reproducción.</td></tr><tr><td>SetPosition(<code>Vector3</code>)</td><td><code>Playlist</code></td><td>Fija la posición 3D desde la que se emite el audio.</td></tr><tr><td>SetFollowTarget(<code>Transform</code>)</td><td><code>Playlist</code></td><td>Hace que la fuente de audio siga a un objeto de la escena.</td></tr><tr><td>SetSpatialSound(<code>bool</code>)</td><td><code>Playlist</code></td><td>Activa o desactiva el sonido espacial (3D).</td></tr><tr><td>SetFadeOut(<code>float</code>)</td><td><code>Playlist</code></td><td>Define el <code>fade out</code> que se aplicará al terminar cada pista o al detener la playlist.</td></tr><tr><td>SetFadeIn(<code>float</code>)</td><td><code>Playlist</code></td><td>Define el <code>fade in</code> que se aplicará al empezar cada pista o al iniciar la playlist.</td></tr><tr><td>SetOutput(<code>Output</code>)</td><td><code>Playlist</code></td><td>Envía el audio a una salida (<code>AudioMixerGroup</code>) concreta.</td></tr><tr><td>OnPlay(<code>Action</code>)</td><td><code>Playlist</code></td><td>Callback al iniciar la playlist.</td></tr><tr><td>OnComplete(<code>Action</code>)</td><td><code>Playlist</code></td><td>Callback al finalizar la playlist (o al detenerla manualmente).</td></tr><tr><td>OnLoopCycleComplete(<code>Action</code>)</td><td><code>Playlist</code></td><td>Callback al completar un ciclo de loop de la playlist.</td></tr><tr><td>OnNextTrackStart(<code>Action</code>)</td><td><code>Playlist</code></td><td>Callback al pasar a la siguiente pista de la playlist.</td></tr><tr><td>OnPause(<code>Action</code>)</td><td><code>Playlist</code></td><td>Callback al pausar la playlist.</td></tr><tr><td>OnPauseComplete(<code>Action</code>)</td><td><code>Playlist</code></td><td>Callback tras completar el <code>fade out</code> de la pausa.</td></tr><tr><td>OnResume(<code>Action</code>)</td><td><code>Playlist</code></td><td>Callback al reanudar la playlist después de una pausa.</td></tr><tr><td>Play()</td><td><code>void</code></td><td>Inicia la reproducción de la playlist.</td></tr><tr><td>Pause(<code>float</code>)</td><td><code>void</code></td><td>Pausa la playlist aplicando un <code>fade out</code> opcional.</td></tr><tr><td>Resume(<code>float</code>)</td><td><code>void</code></td><td>Reanuda la playlist con un <code>fade in</code> opcional.</td></tr><tr><td>Stop(<code>float</code>)</td><td><code>void</code></td><td>Detiene la playlist con un <code>fade out</code> opcional.</td></tr></tbody></table>

***

## 📘 Descripción detallada

### `Playlist` Playlist()

Crea una instancia vacía; deberás añadir pistas antes de reproducir.

***

### `Playlist` Playlist(`Track[]` playlistTracks)

Crea la playlist con los `Track` dados (en el orden proporcionado).

***

### `Playlist` Playlist(`string[]` playlistTags)

Crea la playlist usando los tags dados (en el orden proporcionado).

***

### `Playlist` SetVolume(`float` volume)

Establece el volumen inicial de toda la playlist (0 – 1).

***

### `Playlist` SetHearDistance(`float` minHearDistance, `float` maxHearDistance)

Define la distancia en la que el audio se oye con máximo volumen y la distancia a la que empieza a oírse.

***

### `Playlist` SetVolumeRolloffCurve(`VolumeRolloffCurve` curve)

Elige entre curva logarítmica o lineal para atenuar el volumen con la distancia.

***

### `Playlist` SetCustomVolumeRolloffCurve(`AnimationCurve` curve)

Permite controlar con precisión la atenuación del volumen mediante una curva personalizada.

***

### `void` ChangeVolume(`float` newVolume, `float` lerpTime)

Cambia el volumen durante la reproducción; si `lerpTime` > 0, realiza una transición suave.

***

### `Playlist` SetPitch(`float` pitch)

Aplica un pitch fijo a todas las pistas de la playlist.

***

### `Playlist` SetDopplerLevel(`float` dopplerLevel)

Ajusta la intensidad del efecto Doppler (0 – 5).

***

### `Playlist` SetId(`string` id)

Asigna un identificador único a esta instancia para gestionarla mediante el `SoundsGoodManager` sin necesidad de una referencia directa.

***

### `Playlist` SetLoop(`bool` loop)

Activa la repetición infinita de la lista de reproducción.

***

### `Playlist` SetPlaylist(`Track[]` playlistTracks)

Sustituye la playlist actual por un array de `Track`.

***

### `Playlist` SetPlaylist(`string[]` playlistTags)

Sustituye la playlist actual por un array de tags.

***

### `void` AddToPlaylist(`Track` addedTrack)

Añade dinámicamente un `Track` al final de la cola de reproducción.

***

### `void` AddToPlaylist(`string` addedTrackTag)

Añade dinámicamente un clip identificado por tag al final de la cola.

***

### `void` Shuffle()

Baraja el orden de los clips actuales y actualiza la reproducción si la lista ya estaba sonando.

***

### `Playlist` SetPosition(`Vector3` position)

Fija la posición en el mundo desde donde se emitirá la playlist.

***

### `Playlist` SetFollowTarget(`Transform` followTarget)

Hace que la fuente de audio siga en tiempo real a un objeto de la escena.

***

### `Playlist` SetSpatialSound(`bool` activate)

Activa (true) o desactiva (false) el audio 3D espacial.

***

### `Playlist` SetFadeOut(`float` fadeOutTime)

Define la duración del `fade out` para cada pista o al detener la playlist.

***

### `Playlist` SetFadeIn(`float` fadeInTime)

Define la duración del `fade in` al comenzar cada pista o al iniciar la playlist.

***

### `Playlist` SetOutput(`Output` output)

Envía la playlist a una salida (canal) concreta gestionada por un `AudioMixerGroup`.

***

### `Playlist` OnPlay(`Action` onPlay)

Callback que se ejecuta cuando comienza la playlist.

***

### `Playlist` OnComplete(`Action` onComplete)

Callback que se ejecuta cuando la playlist termina o se detiene manualmente.

***

### `Playlist` OnLoopCycleComplete(`Action` onLoopCycleComplete)

Se dispara al completar un ciclo de loop si el bucle está activo.

***

### `Playlist` OnNextTrackStart(`Action` onNextTrackStart)

Se ejecuta al finalizar la pista actual y comenzar la siguiente.

***

### `Playlist` OnPause(`Action` onPause)

Se ejecuta inmediatamente al pausar la playlist.

***

### `Playlist` OnPauseComplete(`Action` onPauseComplete)

Se dispara tras finalizar el `fade out` de la pausa.

***

### `Playlist` OnResume(`Action` onResume)

Se ejecuta al reanudar la reproducción después de una pausa.

***

### `void` Play()

Comienza la reproducción de la playlist aplicando el `fade in` configurado (si lo hay).

***

### `void` Pause(`float` fadeOutTime)

Pausa la playlist; si se indica `fadeOutTime`, reduce el volumen gradualmente antes de pausar.

***

### `void` Resume(`float` fadeInTime)

Reanuda la playlist desde la pausa; si se indica `fadeInTime`, aumenta el volumen progresivamente.

***

### `void` Stop(`float` fadeOutTime)

Detiene la playlist y aplica el `fade out` dado; si omites el parámetro, detiene inmediatamente.

***
