66 lines
1.5 KiB
C#
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();
|
|
}
|
|
}
|