84 lines
2.1 KiB
C#
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;
|
|
} |