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 IAudioService _audioService; private void Awake() { _audioService = AppServices.App.Register(new AudioService()); } /// /// 初始化音频模块。 /// void Start() { if (m_InstanceRoot == null) { m_InstanceRoot = new GameObject("[AudioService Instances]").transform; m_InstanceRoot.SetParent(gameObject.transform); m_InstanceRoot.localScale = Vector3.one; } if (m_AudioMixer == null) { m_AudioMixer = Resources.Load("AudioMixer"); } _audioService.Initialize(m_AudioGroupConfigs, m_InstanceRoot, m_AudioMixer); } } }