using UnityEngine;
using UnityEngine.Audio;
public class AudioManager : MonoBehaviour
{
public static AudioManager Instance;
[SerializeField]
private AudioSource musicSource;
[SerializeField]
private AudioSource sfxSource;
[SerializeField]
private AudioMixer mixer;
void Awake()
{
if (Instance != null &&
Instance != this)
{
Destroy(gameObject);
return;
}
Instance = this;
DontDestroyOnLoad(
gameObject
);
}
public void PlayMusic(
AudioClip clip)
{
if (musicSource.clip == clip &&
musicSource.isPlaying)
{
return;
}
musicSource.clip = clip;
musicSource.loop = true;
musicSource.Play();
}
public void PlaySFX(
AudioClip clip)
{
sfxSource.PlayOneShot(
clip
);
}
public void SetMasterVolume(
float value)
{
value =
Mathf.Max(
value,
0.0001f
);
float db =
Mathf.Log10(value) *
20f;
mixer.SetFloat(
"MasterVolume",
db
);
PlayerPrefs.SetFloat(
"MasterVolume",
value
);
}
}