Ludo-3D/Assets/Scripts/Audio/MusicManager.cs

66 lines
1.5 KiB
C#

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<MusicType, MusicData> musicDataDict = new Dictionary<MusicType, MusicData>();
public void Initialize()
{
InterfaceManager.Instance?.RegisterInterface<MusicManager>(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();
}
}