通用型:
AudioManager脚本:
public class AudioManager : SingletonMono<AudioManager>
{
private Dictionary<string, AudioClip> _soundDictionary;
public AudioSource bgAudioSource;
public AudioSource effectSuorce;
public void InitSoundDic()
{
DontDestroyOnLoad(this.gameObject);
_soundDictionary = new Dictionary<string, AudioClip>();
AudioClip[] audioArray = Resources.LoadAll<AudioClip>("Sounds");
for (int i = 0; i < audioArray.Length; i++)
{
if (!_soundDictionary.ContainsKey(audioArray[i].name))
{
_soundDictionary.Add(audioArray[i].name, audioArray[i]);
}
}
}
public void PlayBGaudio(string audioName)
{
if (_soundDictionary.ContainsKey(audioName))
{
bgAudioSource.GetComponent<AudioSource>().clip = _soundDictionary[audioName];
bgAudioSource.GetComponent<AudioSource>().Play();
}
}
public void PlayBGaudio(AudioClip audioName)
{
bgAudioSource.GetComponent<AudioSource>().clip = audioName;
bgAudioSource.GetComponent<AudioSource>().Play();
}
public void PlayAudioEffect(string audioName)
{
if (_soundDictionary.ContainsKey(audioName))
{
effectSuorce.PlayOneShot(_soundDictionary[audioName]);
}
}
public void PlayAudioEffect(AudioClip audio)
{
effectSuorce.PlayOneShot(audio);
}
public void SetEffectMusic(bool isMute)
{
effectSuorce.mute = isMute;
}
public void SetBgMusic(bool isMute)
{
bgAudioSource.GetComponent<AudioSource>().mute = isMute;
}
public void SetAllAudio(bool isOn)
{
SetEffectMusic(isOn);
SetBgMusic(isOn);
Debug.Log("声音:" + isOn);
}
}
创建三个空物体,其中AudioManager挂载AudioManager脚本,在BGM和Effect里面加AudioSource组件,把BGM里的Loop勾选上,isOK~