using System; using CriWare; using CriWare.Assets; using Cysharp.Threading.Tasks; using PhxhSDK; using UnityEngine; public class AudioManager: Singlenton, IStart, IInitable, IUpdatable, IAudioPlay { private AudioCriManager _audioMgrObj = new(); private AudioCriwareManager _audioMgrOldObj = new(); public GameObject initGameObject; public static bool DisableAudio = false; private bool isPlayingAlbum = false; public bool IsPlayingAlbum { get { return isPlayingAlbum; } set { isPlayingAlbum = value; } } public AudioCriManager AudioMgrObj { get { return _audioMgrObj; } } public AudioCriwareManager AudioOldMgrObj { get { return _audioMgrOldObj; } } private void AfterSwitchCamera(bool isRegister = true) { if (isRegister) { CameraManager.Instance.AfterSwitchMainCamera += _audioMgrObj.AfterSwitchMainCamera; } else { CameraManager.Instance.AfterSwitchMainCamera -= _audioMgrObj.AfterSwitchMainCamera; } } public void Init() { _audioMgrObj.Init(); AfterSwitchCamera(); } public void Release() { _audioMgrObj.Release(); AfterSwitchCamera(false); } public void Start() { _audioMgrObj.Start(); initGameObject = initGameObject; } public void Update(float dt) { _audioMgrObj.Update(dt); } public float GlobalVolume { get { return _audioMgrObj.GlobalVolume; } set { _audioMgrObj.GlobalVolume = value; } } public float GlobalMusicVolume { get { return _audioMgrObj.GlobalMusicVolume; } set { _audioMgrObj.GlobalMusicVolume = value; } } public float GlobalSoundsVolume { get { return _audioMgrObj.GlobalSoundsVolume; } set { _audioMgrObj.GlobalSoundsVolume = value; } } public bool GlobalIsSpeakOpen { get { return _audioMgrObj.GlobalIsOpenSpeak; } set { _audioMgrObj.GlobalIsOpenSpeak = value; } } public float GlobalSpeakVolume { get { return _audioMgrObj.GlobalSpeakVolume; } set { _audioMgrObj.GlobalSpeakVolume = value; } } public void SetMusicEnable(bool isEnable) { GlobalMusicVolume = isEnable ? 1 : 0; } public void SetSoundEnable(bool isEnable) { GlobalSoundsVolume = isEnable ? 1 : 0; } public CriAtomExAcb GetAcb(string cueSheetName) { return _audioMgrObj.GetAcb(cueSheetName); } #region 流式播放 public int PlayAudio(string key, AudioCriManager.EPlayType type = AudioCriManager.EPlayType.Sound, GameObject posObj = null) { return _audioMgrObj.PlayAudio(key, type, posObj); } public int PlayAudio(string key, Vector3 pos, AudioCriManager.EPlayType type = AudioCriManager.EPlayType.Sound) { return _audioMgrObj.PlayAudio(key, type, pos); } #endregion public async UniTask PlayAudioOld(string key, AudioCriManager.EPlayType type = AudioCriManager.EPlayType.Sound, GameObject posObj = null) { // if (DisableAudio) return 0; // return await _audioMgrObj.PlayAudio(key, type, posObj); Debug.Log("更换流式播放后,Key值需要修改为String,详情参考AudioSourceConfig"); return -1; } public async UniTask PlayAudioOld(string key, Vector3 pos, AudioCriManager.EPlayType type = AudioCriManager.EPlayType.Sound) { Debug.Log("更换流式播放后,Key值需要修改为String,详情参考AudioSourceConfig"); return -1; // if (DisableAudio) return 0; // return await _audioMgrObj.PlayAudio(key, type, pos); } public async UniTask PlayAudioOld(int id, AudioCriManager.EPlayType type = AudioCriManager.EPlayType.Sound, GameObject posObj = null) { // if (DisableAudio) return 0; // return await _audioMgrOldObj.PlayAudio(id, type, posObj); Debug.Log("更换流式播放后,Key值需要修改为String,详情参考AudioSourceConfig"); return -1; } public async UniTask PlayAudioOld(int id, Vector3 pos, AudioCriManager.EPlayType type = AudioCriManager.EPlayType.Sound) { // if (DisableAudio) return 0; // DebugUtil.Log("Test"); // return await _audioMgrOldObj.PlayAudio(id, type, pos); Debug.Log("更换流式播放后,Key值需要修改为String,详情参考AudioSourceConfig"); return -1; } public void StopMusicById(int id) { if (DisableAudio) return; _audioMgrObj.StopMusicById(id); } public void PauseBackgroundMusic() { //TODO 暂停背景音乐 _audioMgrObj?.StopAllMusic(); } public void ResumeBackgroundMusic() { //TODO 恢复背景音乐 _audioMgrObj?.ResumeAllMusic(); } /// /// 注册音频分析器的对音频挂接的监听 /// /// public CriAtomExOutputAnalyzer RegisterAnalyzer()//CriAtomExOutputAnalyzer criAtomExOutputAnalyzer { if (DisableAudio) return null; return _audioMgrObj.RegisterAnalyzer();//criAtomExOutputAnalyzer } /// /// 取消音频分析器对挂接的监听 /// public void UnregisterAnalyzer()//CriAtomExOutputAnalyzer criAtomExOutputAnalyzer { if (DisableAudio) return; _audioMgrObj.UnregisterAnalyzer();//criAtomExOutputAnalyzer } public CriAtomExOutputAnalyzer GetAnalyzer() { return _audioMgrObj.analyzer; } public void StopAll() { _audioMgrObj.StopAll(); } // public Audio GetAudioByID(AudioType audioType, int id) // { // if (DisableAudio) return null; // return _audioMgrObj.GetAudioByID(audioType, id); // } public AudioInst GetAudioByID(AudioCriManager.EPlayType audioType, int id) { if (DisableAudio) return null; return _audioMgrObj.GetAudioByID(audioType, id); } public AudioInst GetStoryAudioInst() { return _audioMgrObj.GetStoryAudioInst(); } public void ReleaseStoryAudios() { _audioMgrObj.ReleaseStoryAudios(); } public void PlayByCueName(int audioID, string cueName) { _audioMgrObj.PlayByCueName(audioID, cueName); } }