using AlicizaX;
using UnityEngine;
using UnityEngine.Audio;
namespace AlicizaX.Audio.Runtime
{
///
/// 音效管理,为游戏提供统一的音效播放接口。
///
/// 场景3D音效挂到场景物件、技能3D音效挂到技能特效上,并在AudioSource的Output上设置对应分类的AudioMixerGroup
[DisallowMultipleComponent]
[AddComponentMenu("Game Framework/Audio")]
public sealed class AudioComponent : MonoBehaviour
{
[SerializeField] private AudioMixer m_AudioMixer;
[SerializeField] private Transform m_InstanceRoot = null;
[SerializeField] private AudioGroupConfig[] m_AudioGroupConfigs = null;
private IAudioModule _audioModule;
private void Awake()
{
_audioModule = ModuleSystem.RegisterModule();
}
///
/// 初始化音频模块。
///
void Start()
{
if (m_InstanceRoot == null)
{
m_InstanceRoot = new GameObject("[AudioModule Instances]").transform;
m_InstanceRoot.SetParent(gameObject.transform);
m_InstanceRoot.localScale = Vector3.one;
}
if (m_AudioMixer == null)
{
m_AudioMixer = Resources.Load("AudioMixer");
}
_audioModule.Initialize(m_AudioGroupConfigs, m_InstanceRoot, m_AudioMixer);
}
}
}