using UnityEngine; using System.Collections.Generic; using System.Security.Cryptography.X509Certificates; using System.Threading.Tasks; namespace Stary.Evo.AudioCore { public static class AudioCoreManager { private static AudioSourcePool audioSourcePool; private static VoicePlayer Voice; private static SFXPlayer SFX; private static MusicPlayer Music; public static void Initialize() { audioSourcePool = new AudioSourcePool(); // 初始化播放器 Voice = new VoicePlayer(audioSourcePool); SFX = new SFXPlayer(audioSourcePool); Music = new MusicPlayer(audioSourcePool); } #region 语音 /// /// 播放语音 /// /// {[clip:音频], [volume:音量], /// [onComplete:回调行为], [delayOnCompleteTime:延迟回调执行的时间], /// [is3DAudio:是否3D音频], [audio3DPosition:3D音频位置], /// [audio3DMaxDistance:3D音频最大距离]} public static void PlayVoice(AudioData audioData) { if(Voice == null) Initialize(); Voice.Play(audioData); } /// /// 异步播放语音 /// /// {[clip:音频], [volume:音量], /// [onComplete:回调行为], [delayOnCompleteTime:延迟回调执行的时间], /// [is3DAudio:是否3D音频], [audio3DPosition:3D音频位置], /// [audio3DMaxDistance:3D音频最大距离]} /// public static Task PlayAsyncVoice(AudioData audioData) { if(Voice == null) Initialize(); return Voice.PlayAsync(audioData); } /// /// 停止当前的语音 /// public static void StopVoice() { if(Voice == null) return; Voice.Stop(); } #endregion #region 音效 /// /// 播放音效 /// /// {[clip:音频], [volume:音量], /// [onComplete:回调行为], [delayOnCompleteTime:延迟回调执行的时间], /// [is3DAudio:是否3D音频], [audio3DPosition:3D音频位置], /// [audio3DMaxDistance:3D音频最大距离]} public static void PlaySFX(AudioData audioData) { if(SFX == null) Initialize(); SFX.Play(audioData); } /// /// 停止所有音效 /// public static void StopAllSFX() { if(SFX == null) return; AudioData audioData = new AudioData(); SFX.Stop(); } #endregion #region 背景音乐 /// /// 播放背景音乐 /// /// {[clip:音频], [volume:音量], [fadeDuration:自然过渡时间], /// [is3DAudio:是否3D音频], [audio3DPosition:3D音频位置], /// [audio3DMaxDistance:3D音频最大距离]} public static void PlayMusic(AudioData audioData) { if(Music == null) Initialize(); Music.Play(audioData); } /// /// 设置背景音乐音量 /// /// {[volume:音量], [fadeDuration:自然过渡时间]} public static void SetMusicVolume(AudioData audioData) { if(Music == null) return; Music.SetMusicVolume(audioData); } /// /// 停止播放背景音乐 /// /// 自然过渡时间 public static void StopMusic(float fadeDuration = 1f) { if(Music == null) return; AudioData audioData = new AudioData(); audioData.fadeDuration = fadeDuration; Music.Stop(audioData); } #endregion /// /// 重新初始化 /// /// public static void Reinitialize() { if (audioSourcePool == null) Initialize(); StopVoice(); StopAllSFX(); StopMusic(); } } }