EndlessRocket/Assets/Scripts/AudioManager.cs
2023-07-30 23:14:41 +05:30

75 lines
1.9 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") == 1;
}else{
return false;
}
}}
public static bool isMuteSFX {get{
if(PlayerPrefs.HasKey("sfx")){
return PlayerPrefs.GetInt("sfx") == 1;
}else{
return false;
}
}}
public static void ToggleMusic(){
if(isMuteMusic){
PlayerPrefs.SetInt("music",1);
}else{
PlayerPrefs.SetInt("music",0);
}
}
public static void ToggleSFX(){
if(isMuteMusic){
PlayerPrefs.SetInt("sfx",1);
}else{
PlayerPrefs.SetInt("sfx",0);
}
}
void Awake(){
instance= this;
DontDestroyOnLoad(this);
}
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;
}