using System.Collections.Generic; using UnityEngine; using UnityEngine.Pool; public class SoundManager : SingletonMonoBehaviour { [SerializeField] AudioClip[] backgroundMusic; [SerializeField] AudioClip[] buttonSuond; [SerializeField] AudioClip[] eftSuond; float backgroundvolume = 0.1f; float eftvolume = 0.3f; public eBackgroundMusic nowMusic; [SerializeField] GameObject eftSound; ObjectPool soundPool; List soundList = new List(); AudioSource BackGround; public eBackgroundMusic NowPlayMusic//현재 재생중인 배경음악 정보를 넘겨줌 { get { return nowMusic; } } public void PlayBack(eBackgroundMusic Num) { BackGround.clip = backgroundMusic[(int)Num]; BackGround.mute = false; BackGround.loop = true; BackGround.volume = backgroundvolume; BackGround.Play(); nowMusic = Num; } protected override void OnAwake() { eftSound = (GameObject)Resources.Load("System/SoundBox"); BackGround = GetComponent(); soundPool = new ObjectPool(PrefabsOnCreate, PrefabsOnGet, PrefabsOnRelease, null, true, 20); nowMusic = 0; } private SoundBox PrefabsOnCreate() { return Instantiate(eftSound, transform).GetComponent(); } private void PrefabsOnGet(SoundBox sound) { soundList.Add(sound); sound.gameObject.SetActive(true); } private void PrefabsOnRelease(SoundBox sound) { sound.gameObject.SetActive(false); soundList.Remove(sound); } public void StartSound(eEftSuond Clip) { var obj = soundPool.Get(); obj.gameObject.SetActive(true); obj.PlaySound(eftSuond[(int)Clip], eftvolume); } public void StartSound(eEftSuond Clip,Vector3 tr) { var obj = soundPool.Get(); obj.gameObject.SetActive(true); obj.PlaySound(eftSuond[(int)Clip], eftvolume, tr); } public void EndSound(SoundBox Box) { Box.gameObject.SetActive(false); soundPool.Release(Box); } public enum eBackgroundMusic { } public enum eButtonSuond { } public enum eEftSuond { TitleSound, ButtonPop, } }