using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.Audio; namespace Manager { public class SoundManager : MonoSingleton { public AudioMixer audioMixer;//»ìÒôÆ÷ public AudioSource MusicSource; public AudioSource SoundSource; const string MusicPath = "Music/"; const string SoundPath = "Sound/"; private bool musicOn; public bool MusicOn { get { return musicOn; } set { musicOn = value; this.MusicMute(!musicOn); } } private bool soundOn; public bool SoundOn { get { return soundOn; } set { soundOn = value; this.SoundMute(!soundOn); } } private int musicVolume; public int MusicVolume { get { return musicVolume; } set { musicVolume = value; if (musicOn) this.SetVolume("MusicVolume", musicVolume); } } private int soundVolume; public int SoundVolume { get { return soundVolume; } set { soundVolume = value; if (soundOn) this.SetVolume("SoundVolume", soundVolume); } } public void SoundMute(bool mute) { this.SetVolume("SoundVolume", mute ? 0 : soundVolume); } public void MusicMute(bool mute) { this.SetVolume("MusicVolume", mute ? 0 : musicVolume); } void SetVolume(string name, int value) { float volume = value * 0.5f - 50f; this.audioMixer.SetFloat(name, volume); } void Start() { this.MusicVolume = SystemConfig.MusicVolume; this.SoundVolume = SystemConfig.SoundVolume; this.MusicOn = SystemConfig.MusicOn; this.soundOn = SystemConfig.SoundOn; } public void PlayMusic(string name) { AudioClip clip = Resloader.Load(MusicPath + name); if (clip == null) { Debug.LogWarningFormat("PlayMusic:{0} not existed", name); return; } if (MusicSource.isPlaying) { MusicSource.Stop(); } MusicSource.clip = clip; MusicSource.Play(); } public void PlaySound(string name) { AudioClip clip = Resloader.Load(SoundPath + name); if (clip == null) { Debug.LogWarningFormat("PlaySound:{0} not existed", name); return; } SoundSource.PlayOneShot(clip); } public void PlayEffect(AudioSource audio,AudioClip clip) { if (clip == null) { Debug.LogWarningFormat("PlaySound:{0} not existed", name); return; } audio.PlayOneShot(clip); } } }