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); } } }