Un Audio Manager centraliza música y efectos globales.
using UnityEngine;
public class AudioManager : MonoBehaviour
{
public static AudioManager Instance;
[SerializeField]
private AudioSource musicSource;
[SerializeField]
private AudioSource sfxSource;
void Awake()
{
if (Instance != null &&
Instance != this)
{
Destroy(gameObject);
return;
}
Instance = this;
DontDestroyOnLoad(gameObject);
}
public void PlaySFX(AudioClip clip)
{
sfxSource.PlayOneShot(clip);
}
public void PlayMusic(AudioClip clip)
{
musicSource.clip = clip;
musicSource.loop = true;
musicSource.Play();
}
}
AudioManager.Instance.PlaySFX(sonido);
Para:
No hace falta que absolutamente todo sonido pase por un único manager.
Music Source
SFX Source
AudioManager
DontDestroyOnLoad