using System.Collections; using System.Collections.Generic; using UnityEngine; public class AudioManager : MonoBehaviour { public static AudioManager instance; public AudioClip explosionSFX; public AudioClip powerupSFX; public AudioClip powerdownSFX; public AudioClip whooshSFX; [SerializeField]public AudioSource SourceSFX; [SerializeField]public AudioSource SourceMusic; [SerializeField]public LevelAudioCombo[] levels; public static bool isMuteMusic {get{ if(PlayerPrefs.HasKey("music")){ return PlayerPrefs.GetInt("music") == 0; }else{ return false; } }} public static bool isMuteSFX {get{ if(PlayerPrefs.HasKey("sfx")){ return PlayerPrefs.GetInt("sfx") == 0; }else{ return false; } }} public static void ToggleMusic(){ if(isMuteMusic){ PlayerPrefs.SetInt("music",1); instance.SourceMusic.volume = instance.defVol; }else{ PlayerPrefs.SetInt("music",0); instance.SourceMusic.volume = 0; } PlayerPrefs.Save(); } float defVol; public static void ToggleSFX(){ if(isMuteSFX){ PlayerPrefs.SetInt("sfx",1); }else{ PlayerPrefs.SetInt("sfx",0); } PlayerPrefs.Save(); } void Awake(){ instance= this; DontDestroyOnLoad(this); defVol = SourceMusic.volume; } public static void ChangeMusicToScene(string scene){ AudioClip chosen = instance.levels[0].clip; foreach(LevelAudioCombo level in instance.levels){ if(level.name == scene){ chosen = level.clip; break; } } ChangeBGMusic(chosen); } public static void ChangeBGMusic(AudioClip clip){ instance.SourceMusic.Stop(); instance.SourceMusic.clip = clip; instance.SourceMusic.Play(); } public static void PlayExplosion(){ if(isMuteSFX){return;} instance.SourceSFX.PlayOneShot(instance.explosionSFX); } public static void PlayPowerup(){ if(isMuteSFX){return;} instance.SourceSFX.PlayOneShot(instance.powerupSFX); } public static void PlayPowerdown(){ if(isMuteSFX){return;} instance.SourceSFX.PlayOneShot(instance.powerdownSFX); } public static void PlayWhoosh(){ if(isMuteSFX){return;} instance.SourceSFX.PlayOneShot(instance.whooshSFX); } } [System.Serializable] public class LevelAudioCombo{ public string name; public AudioClip clip; }