49 lines
1.5 KiB
C#
49 lines
1.5 KiB
C#
|
using AlicizaX;
|
|||
|
using UnityEngine;
|
|||
|
using UnityEngine.Audio;
|
|||
|
|
|||
|
namespace AlicizaX.Audio.Runtime
|
|||
|
{
|
|||
|
/// <summary>
|
|||
|
/// 音效管理,为游戏提供统一的音效播放接口。
|
|||
|
/// </summary>
|
|||
|
/// <remarks>场景3D音效挂到场景物件、技能3D音效挂到技能特效上,并在AudioSource的Output上设置对应分类的AudioMixerGroup</remarks>
|
|||
|
[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<IAudioModule,AudioModule>();
|
|||
|
}
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// 初始化音频模块。
|
|||
|
/// </summary>
|
|||
|
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>("AudioMixer");
|
|||
|
}
|
|||
|
|
|||
|
_audioModule.Initialize(m_AudioGroupConfigs, m_InstanceRoot, m_AudioMixer);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|