using System.Collections; using System.Collections.Generic; using UnityEngine; public enum MusicType { HomeMusic, GameMusic, GameOverMusic } [System.Serializable] public class MusicData { public MusicType musicType; public int priority; public AudioClip musicClip; } public class MusicManager : MonoBehaviour, IBootLoader, IBase, IDataLoader { [SerializeField] AudioSource audioSource; [SerializeField] private MusicData[] musicDatas; public bool IsGamemusicOn { get; private set; } private Dictionary musicDataDict = new Dictionary(); public void Initialize() { InterfaceManager.Instance?.RegisterInterface(this); } public void InitializeData() { audioSource.priority = 0; for (int idx = 0; idx < musicDatas.Length; idx++) { if (musicDataDict.ContainsKey(musicDatas[idx].musicType)) musicDataDict[musicDatas[idx].musicType] = musicDatas[idx]; else musicDataDict.Add(musicDatas[idx].musicType, musicDatas[idx]); } } public void SetGamemusic(bool state) { IsGamemusicOn = state; } public void PlayMusicClip(MusicType musicType) { if (!enabled) return; MusicData musicData = musicDataDict[musicType]; audioSource.priority = musicData.priority; audioSource.clip = musicData.musicClip; audioSource.Play(); } }