EndlessRocket/Assets/Scripts/AudioManager.cs

84 lines
2.1 KiB
C#

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class AudioManager : MonoBehaviour
{
public static AudioManager instance;
public AudioClip explosionSFX;
[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);
}
}
[System.Serializable]
public class LevelAudioCombo{
public string name;
public AudioClip clip;
}