public class AudioCriManager { public enum EPlayType { Music, Sound, Speak } } // //流式播放的音频管理器 // // using System; // using System.Collections.Generic; // using System.Linq; // using cfg.DeviceCfg; // using CriWare; // using Framework; // using PhxhSDK; // using UnityEngine; // using AudioType = PhxhSDK.AudioBase.AudioType; // using Object = UnityEngine.Object; // // public class AudioCriManager: Singlenton, IStart, IInitable, IUpdatable, IAudioPlay // { // public GameObject initGameObject; // public GameObject AudioRoot; // public GameObject CriAtomRoot; // public CriAtom CriAtom; // public ClipType curClipType; // // private AudioCriInst _bgmAudioCri; // public CriAtomListener Listener; // private Dictionary _cacheCueInfoArrays = new(); // // /// // /// 对象池数量限制 // /// // public int MusicPoolLimit = 1; // public int SoundPoolLimit = 100; // public int SpeakPoolLimit = 1; // // public enum EPlayType // { // Music, // Sound, // Speak // } // // private GameObject _criError; // // /// // /// 播放音频对象池 // /// // private Dictionary _soundAudioDic; // private Dictionary _soundAudioLoopDic; // private Dictionary _musicAudioDic; // private Dictionary _musicAudioLoopDic; // private Dictionary _allAudioDic; // // private List _soundAudioObj; // private List _soundAudioLoopObj; // private List _musicAudioObj; // private List _musicAudioLoopObj; // // public enum PlayType // { // Music, // Sound, // Speak // } // // private Dictionary> _playingLDic; // // private List _soundAudioQue; // // private Dictionary _storyAudioDic; // // private const int SOUND_MAX_NUM = 20; // private const int MUSIC_MAX_NUM = 2; // // #region Property // // private float _vol = 1f; // // public float GlobalSoundsVolume // { // get => AudioCri.GlobalSoundVolume; // set => AudioCri.GlobalSoundVolume = value; // } // public float GlobalSpeakVolume{ // get => AudioCri.GlobalSpeakVolume; // set => AudioCri.GlobalSpeakVolume = value; // } // // public float GlobalMusicVolume { // get => AudioCri.GlobalMusicVolume; // set => AudioCri.GlobalMusicVolume = value; // } // // public float GlobalVolume // { // get => AudioCri.GlobalVolume; // set => AudioCri.GlobalVolume = value; // } // // public bool GlobalIsOpenSpeak; // // public AudioCriInst BgmAudioCri // { // get { return _bgmAudioCri; } // set { _bgmAudioCri = value; } // } // // public CriAtomExOutputAnalyzer analyzer=null; // public bool IsAnalyzer = false; // // // #endregion // // #region Analyze // // //在播放之前注册 // public CriAtomExOutputAnalyzer RegisterAnalyzer()//CriAtomExOutputAnalyzer s // { // IsAnalyzer = true; // if (analyzer == null) // { // analyzer = new(NewAnalyzerConfig()); // } // return analyzer; // //analyzer = s; // } // // public void UnregisterAnalyzer()//CriAtomExOutputAnalyzer s // { // //s.DetachExPlayer(); // IsAnalyzer = false; // //analyzer = null; // } // // /// // /// 获取音频输出分析器配置 // /// // /// // private CriAtomExOutputAnalyzer.Config NewAnalyzerConfig() // { // CriAtomExOutputAnalyzer.Config config = new() // { // enableSpectrumAnalyzer = true, // 开启频谱分析 // numSpectrumAnalyzerBands = 16, // 频谱分析数量SPECTRUM_SAMPLES_NUMBER // }; // // return config; // } // // #endregion // // #region Framework // // public void Start() // { // if (!AudioRoot) // { // curClipType = ClipType.CriwareClip; // // AudioRoot = new GameObject(); // AudioRoot.name = "Audio(Singleton)"; // Object.DontDestroyOnLoad(AudioRoot); // // if (curClipType == ClipType.CriwareClip) // { // _criError = new GameObject(); // _criError.name = "CriwareError"; // _criError.AddComponent(); // Object.DontDestroyOnLoad(_criError); // } // // var initialize = GameObject.Find("CriWareLibraryInitializer"); // Object.DontDestroyOnLoad(initialize); // CriAtomRoot = GameObject.Find("CriAtom"); // CriAtom = CriAtomRoot.GetComponent(); // Object.DontDestroyOnLoad(CriAtomRoot); // } // // CriAtomRoot = new GameObject() // // { // // name = "CriAtom" // // }; // // CriAtom = CriAtomRoot.AddComponent(); // // CriAtom.AddCueSheet() // // // for (int i = 0; i < SOUND_MAX_NUM; i++) // // { // // var go = new GameObject // // { // // name = "Sound" + (i+1) // // }; // // go.transform.SetParent(AudioRoot.transform); // // } // // // // for (int i = 0; i < MUSIC_MAX_NUM; i++) // // { // // var go = new GameObject // // { // // name = "Music" + (i+1) // // }; // // go.transform.SetParent(AudioRoot.transform); // // } // } // // public void Init() // { // _soundAudioDic = new Dictionary(); // _soundAudioLoopDic = new Dictionary(); // _musicAudioDic = new Dictionary(); // _musicAudioLoopDic = new Dictionary(); // // _allAudioDic = new Dictionary(); // _soundAudioLoopObj = new(); // _musicAudioLoopObj = new(); // _soundAudioObj = new(); // _musicAudioObj = new(); // _playingLDic = new (); // _playingLDic.Add(PlayType.Music, new List()); // _playingLDic.Add(PlayType.Sound, new List()); // _playingLDic.Add(PlayType.Speak, new List()); // // _storyAudioDic = new(); // } // // public void Release() // { // // } // // public void Update(float dt) // { // foreach (var kv in _musicAudioDic) // { // var audio = kv.Value; // if (!audio.IsStopped) // { // audio.Update(dt); // } // } // // foreach (var kv in _musicAudioLoopDic) // { // var audio = kv.Value; // if (!audio.IsStopped) // { // audio.Update(dt); // } // } // // foreach (var kv in _soundAudioDic) // { // var audio = kv.Value; // if (!audio.IsStopped) // { // audio.Update(dt); // } // } // // foreach (var kv in _soundAudioLoopDic) // { // var audio = kv.Value; // if (!audio.IsStopped) // { // audio.Update(dt); // } // } // // foreach (var kv in _storyAudioDic) // { // var audio = kv.Value; // if (!audio.IsStopped) // { // audio.Update(dt); // } // } // } // // #endregion // // #region LoadAsset // // // private string _GetCriPath(string name) // // { // // var commonStr = "CueSheet_"; // // var strArr = name.Split('_'); // // var pre = strArr[0]; // // if (pre != null) // // { // // if (pre == "Voice") // // { // // return "CueSheet_Voice"; // // } // // // // if (pre == "bgm") // // { // // return "CueSheet_bgm"; // // } // // // // if (pre == "Sound") // // { // // return "CueSheet_Sound"; // // } // // // // if (pre == "ev") // // { // // return "CueSheet_ev"; // // } // // // // if (pre == "ui") // // { // // return "CueSheet_ui"; // // } // // } // // // // return ""; // // } // // //优化SplitGC // private string _GetCriPath(string name) // { // var firstChar = name[0]; // if (!string.IsNullOrEmpty(name)) // { // if (firstChar == 'b') // { // return "CueSheet_bgm"; // } // // if (firstChar == 'V') // { // return "CueSheet_Voice"; // } // // if (firstChar == 'S') // { // return "CueSheet_Sound"; // } // // if (firstChar == 'e') // { // return "CueSheet_ev"; // } // // if (firstChar == 'u') // { // return "CueSheet_ui"; // } // } // // return ""; // } // // private string _GetAcbPath(string name) // { // var path = _GetCriPath(name); // if (string.IsNullOrEmpty(path)) // { // DebugUtil.LogError($"获取不到对应的ACB文件,key: {name}"); // return ""; // } // // return path + ".acb"; // } // // private string _GetAwbPath(string name) // { // var path = _GetCriPath(name); // if (string.IsNullOrEmpty(path)) // { // DebugUtil.LogError($"获取不到对应的AWB文件,key: {name}"); // return ""; // } // // return path + ".awb"; // } // // private string _GetAcfPath(string name) // { // var path = _GetCriPath(name); // if (path == null) // { // DebugUtil.LogError($"获取不到对应的ACF文件,key: {name}"); // return ""; // } // // return path + ".acf"; // } // #endregion // // #region AudioObj // // /// // /// 获取可用的Audio // /// // /// // /// // private AudioCriInst _GetUsableAudio(AudioBase.AudioType audioType, bool isLoop, bool isSpeak = false) // { // try // { // var limit = _CheckIsAudioLimited(audioType, isSpeak); // if (limit) // { // return _GetOldAudio(audioType, isLoop, isSpeak); // } // // var freeAudio = _GetFreeAudio(audioType, isLoop); // return freeAudio ?? _CreateNewAudio(audioType, isLoop); // } // // catch (Exception e) // { // DebugUtil.LogError($"AudioManger, GetUsableAudio Fail."); // } // // return null; // } // // private AudioCriInst _GetOldAudio(AudioBase.AudioType audioType, bool isLoop, bool isSpeak) // { // var playingList = _playingLDic[GetPlayType(audioType, isSpeak)]; // if (playingList.Count > 0) // { // var audio = GetAudioByID(playingList[0]); // return audio; // } // return _CreateNewAudio(audioType, isLoop); // } // // private int _GetLimit(AudioBase.AudioType audioType, bool isSpeak) // { // if (isSpeak) // { // return SpeakPoolLimit; // } // // if (audioType == AudioBase.AudioType.Music) // { // return MusicPoolLimit; // } // // if (audioType == AudioBase.AudioType.Sound) // { // return SoundPoolLimit; // } // // return -1; // } // // private PlayType GetPlayType(AudioBase.AudioType audioType, bool isSpeak) // { // if (isSpeak) // return PlayType.Speak; // if (audioType == AudioBase.AudioType.Music) // return PlayType.Music; // return PlayType.Sound; // } // private bool _CheckIsAudioLimited(AudioBase.AudioType audioType, bool isSpeak) // { // var limit = _GetLimit(audioType, isSpeak); // var playingList = _playingLDic[GetPlayType(audioType, isSpeak)]; // if (playingList.Count >= limit) // { // return true; // } // // return false; // } // // private Dictionary _GetAudioDic(AudioBase.AudioType audioType, bool isLoop) // { // switch (audioType) // { // case AudioBase.AudioType.Music: // return isLoop? _musicAudioLoopDic : _musicAudioDic; // case AudioBase.AudioType.Sound: // return isLoop? _soundAudioLoopDic : _soundAudioDic; // default: // { // DebugUtil.LogError("获取AudioDic出错!!!传入AudioType有误!"); // return null; // } // } // } // // private AudioCriInst _GetFreeAudio(AudioBase.AudioType audioType, bool isLoop) // { // var dic = _GetAudioDic(audioType, isLoop); // if (dic != null) // { // foreach (var kv in dic) // { // var audio = kv.Value; // if (audio.IsStopped) // { // return audio; // } // } // } // // return null; // } // // private AudioCriInst _CreateStoryAudio(GameObject posGo = null) // { // var rootGo = new GameObject() // { // name = "AudioStory" // }; // rootGo.transform.SetParent(AudioRoot.transform); // var audio = new AudioCriInst(AudioBase.AudioType.Sound, rootGo, null); // rootGo.name += audio.audioID; // _storyAudioDic.TryAdd(audio.audioID, audio); // _allAudioDic.Add(audio.audioID, audio); // return audio; // } // // private AudioCriInst _CreateNewAudio(AudioBase.AudioType audioType, bool isLoop) // { // var rootGo = new GameObject() // { // name = "Audio" // }; // rootGo.transform.SetParent(AudioRoot.transform); // var audio = new AudioCriInst(audioType, rootGo, null); // // if (audioType == AudioBase.AudioType.Music) // { // rootGo.name = "music"; // rootGo.name += audio.audioID; // if (isLoop) // { // rootGo.name += "Loop"; // _musicAudioLoopDic.TryAdd(audio.audioID, audio); // _musicAudioLoopObj.Add(rootGo); // } // else // { // _musicAudioDic.TryAdd(audio.audioID, audio); // _musicAudioObj.Add(rootGo); // } // // if (IsAnalyzer) // { // rootGo.GetComponent().AttachToAnalyzer(analyzer); // } // } // if (audioType == AudioBase.AudioType.Sound) // { // rootGo.name = "Sound"; // rootGo.name += audio.audioID; // if (isLoop) // { // rootGo.name += "Loop"; // _soundAudioLoopDic.TryAdd(audio.audioID, audio); // _soundAudioLoopObj.Add(rootGo); // } // else // { // _soundAudioDic.TryAdd(audio.audioID, audio); // _soundAudioObj.Add(rootGo); // } // } // _allAudioDic.Add(audio.audioID, audio); // // return audio; // } // // #endregion // // #region Play // // /// // /// 调用接口,传obj // /// // /// // /// // /// // /// // private int _PlayAudio(string key, EPlayType type, GameObject posObj = null, bool isLoop = false, // bool isFade = false, float fadeTime = 0f) // { // switch (type) // { // case EPlayType.Sound: // if (AudioCri.GlobalVolume <= 0 || AudioCri.GlobalSoundVolume <= 0) // { // return -1; // } // break; // case EPlayType.Speak: // if (AudioCri.GlobalVolume <= 0 || AudioCri.GlobalSpeakVolume <= 0) // { // return -1; // } // break; // default: // break; // } // if (string.IsNullOrEmpty(key)) // { // return -1; // } // // //策略2 超过限制不播 // // var audioType = AudioBase.AudioType.Music; // // bool isSpeak = false; // // if (type == EPlayType.Sound) // // { // // audioType = AudioBase.AudioType.Sound; // // } // // if (type == EPlayType.Speak) // // { // // audioType = AudioBase.AudioType.Sound; // // isSpeak = true; // // } // // if (_CheckIsAudioLimited(audioType, isSpeak)) // // { // // return -1; // // } // // if (CriAtom) // { // try // { // var cueSheetName = _GetCriPath(key); // if (!string.IsNullOrEmpty(cueSheetName)) // { // if (CriAtom.GetCueSheetInternal(cueSheetName) == null) // { // var acbPath = _GetAcbPath(key); // var awbPath = _GetAwbPath(key); // if (string.IsNullOrEmpty(acbPath) || string.IsNullOrEmpty(awbPath)) // { // return -1; // } // // var cueSheet = CriAtom.AddCueSheet(cueSheetName, acbPath, awbPath, null); // } // } // // var criCueSheet = CriAtom.GetCueSheetInternal(cueSheetName); // if (criCueSheet != null && criCueSheet.acb != null) // { // var cueInfoList = CriAtom.GetCueSheetInternal(cueSheetName).acb.GetCueInfoList(); // var cueInfo = Array.Find(cueInfoList, (cue) => cue.name == key); // if (cueInfo.name == null) // { // DebugUtil.LogWarning($"Can not Find Criware Key:{key}"); // return -1; // } // } // else // { // DebugUtil.LogWarning($"Can not Find Criware Key:{key}"); // return -1; // } // } // catch (Exception e) // { // DebugUtil.LogError($"AudioManager, CriAtom Exception."); // } // } // // string path = _GetCriPath(key); // // switch (type) // { // case EPlayType.Music: // { // return _PlayMusic(key, path, posObj, isLoop, isFade, fadeTime); // } // case EPlayType.Sound: // { // return _PlaySound(key, path, posObj, isLoop, isFade, fadeTime); // } // case EPlayType.Speak: // { // return _PlaySpeakSound(key, path, posObj, isFade, fadeTime); // } // default: break; // } // // return -1; // } // // /// // /// 调用接口,传位置 // /// // /// // /// // /// // /// // private int _PlayAudio(string key, EPlayType type, Vector3 pos, bool loop = false, // bool isFade = false, float fadeTime = 0f) // { // //策略2 超过限制不播 // // var audioType = AudioBase.AudioType.Music; // // bool isSpeak = false; // // if (type == EPlayType.Sound) // // { // // audioType = AudioBase.AudioType.Sound; // // } // // if (type == EPlayType.Speak) // // { // // audioType = AudioBase.AudioType.Sound; // // isSpeak = true; // // } // // if (_CheckIsAudioLimited(audioType, isSpeak)) // // { // // return -1; // // } // switch (type) // { // case EPlayType.Sound: // if (AudioCri.GlobalVolume <= 0 || AudioCri.GlobalSoundVolume <= 0) // { // return -1; // } // break; // case EPlayType.Speak: // if (AudioCri.GlobalVolume <= 0 || AudioCri.GlobalSpeakVolume <= 0) // { // return -1; // } // break; // default: // break; // } // // if (CriAtom) // { // var cueSheetName = _GetCriPath(key); // if (CriAtom.GetCueSheetInternal(cueSheetName) == null) // { // var acbPath = _GetAcbPath(key); // var awbPath = _GetAwbPath(key); // if (string.IsNullOrEmpty(acbPath) || string.IsNullOrEmpty(awbPath)) // { // return -1; // } // var cueSheet = CriAtom.AddCueSheet(cueSheetName, acbPath, awbPath, null); // } // // CriAtomEx.CueInfo[] cueInfos; // if (!_cacheCueInfoArrays.ContainsKey(cueSheetName)) // { // cueInfos = CriAtom.GetCueSheetInternal(cueSheetName).acb.GetCueInfoList(); // _cacheCueInfoArrays.Add(cueSheetName, cueInfos); // } // else // { // cueInfos = _cacheCueInfoArrays[cueSheetName]; // } // // var cueInfoList = CriAtom.GetCueSheetInternal(cueSheetName).acb.GetCueInfoList(); // var cueInfo = Array.Find(cueInfos, (cue) => cue.name == key ); // if (cueInfo.name == null) // { // DebugUtil.LogWarning($"Can not Find Criware Key:{key}"); // return -1; // } // } // // string path = _GetCriPath(key); // // switch (type) // { // case EPlayType.Music: // { // return _PlayMusic(key, path, pos, loop, isFade, fadeTime); // } // case EPlayType.Sound: // { // return _PlaySound(key, path, pos, loop, isFade, fadeTime); // } // case EPlayType.Speak: // { // return _PlaySpeakSound(key, path, pos, isFade, fadeTime); // } // default: break; // } // // return -1; // } // // private int _PlayMusic(string key, string path, GameObject posObj = null, bool isLoop = true, bool isFade = false, float fadeTime = 0f, float volume = 1f) // { // // if (GlobalMusicVolume < 0.01f) // // { // // return -1; // // } // if (!isFade) // { // // if (_bgmAudio != null) // // { // // _bgmAudio.Stop(); // // } // AudioInfo audioInfo = new AudioInfo() // { // persist = true, // volume = 1, // fadeInValue = 0.3f, // fadeOutValue = 0.3f, // }; // var audio = _GetUsableAudio(AudioBase.AudioType.Music, isLoop); // // //错误打印,保护 // if (audio == null) // { // DebugUtil.LogError($"AudioManager, PlayMusic, Cant GetUsableAudio key:{key}"); // return -1; // } // // audio.SetPosObj(posObj); // audio.SetIsSpeak(false); // audio.SetVolume(volume); // audio.SetIsLoop(isLoop); // // if (_bgmAudio != null && _bgmAudio != audio) // // { // // _bgmAudio.Stop(); // // } // audio.Stop(); // audio.Play(path, key); // audio.SetIsLoop(isLoop); // //_bgmAudio = audio; // return audio.audioID; // } // else // { // AudioInfo audioInfo = new AudioInfo() // { // persist = true, // volume = 1, // fadeInValue = 0.3f, // fadeOutValue = 0.3f, // }; // var audio = _GetUsableAudio(AudioBase.AudioType.Music, isLoop); // audio.SetPosObj(posObj); // audio.SetIsSpeak(false); // // if (_bgmAudio != null && _bgmAudio != audio) // // { // // _bgmAudio.Stop(); // // } // // //audio.SetIsFadeIn(true); // audio.Stop(); // audio.SetVolume(0); // audio.PlayWithFade(path, key, fadeTime); // audio.SetIsLoop(isLoop); // //_bgmAudio = audio; // return audio.audioID; // } // } // // private int _PlayMusic(string key, string path, Vector3 pos, bool isLoop, bool isFade = false, float fadeTime = 0f, float volume = 1f) // { // // if (GlobalMusicVolume < 0.01f) // // { // // return -1; // // } // AudioInfo audioInfo = new AudioInfo() // { // persist = true, // volume = 1, // fadeInValue = 0.3f, // fadeOutValue = 0.3f, // }; // var audio = _GetUsableAudio(AudioBase.AudioType.Music, isLoop); // // //错误打印,保护 // if (audio == null) // { // DebugUtil.LogError($"AudioManager, PlayMusic By Pos, Cant GetUsableAudio key:{key}"); // return -1; // } // // audio.SetPos(pos); // audio.SetIsSpeak(false); // // // if (_bgmAudio != null && _bgmAudio != audio) // // { // // _bgmAudio.Stop(); // // } // // audio.SetIsLoop(true); // audio.Stop(); // if (isFade) // { // audio.SetVolume(0); // audio.SetTargetVolume(volume); // audio.PlayWithFade(path, key, fadeTime); // } // else // { // audio.Play(path, key); // } // // //_bgmAudio = audio; // // audio.SetIsLoop(isLoop); // return audio.audioID; // } // // private int _PlaySound(string key, string path, GameObject posObj = null, bool isLoop = false, // bool isFade = false, float fadeTime = 0f, float volume = 1f) // { // if (GlobalSoundsVolume < 0.01f) // { // return -1; // } // AudioInfo audioInfo = new AudioInfo() // { // persist = true, // volume = 1, // fadeInValue = 0.3f, // fadeOutValue = 0.3f, // }; // // var audio = _GetUsableAudio(AudioBase.AudioType.Sound, isLoop); // // //错误打印,保护 // if (audio == null) // { // DebugUtil.LogError($"AudioManager, PlaySound By Obj, Cant GetUsableAudio key:{key}"); // return -1; // } // // audio.Stop(); // // audio.SetPosObj(posObj); // audio.SetIsSpeak(false); // audio.SetIsLoop(isLoop); // if (posObj) // { // audio.SetIs3D(true); // } // // if (isFade) // { // audio.SetVolume(0); // audio.PlayWithFade(path, key); // } // else // { // audio.SetVolume(volume); // audio.Play(path, key); // } // // audio.SetIsLoop(isLoop); // return audio.audioID; // } // // private int _PlaySound(string key, string path, Vector3 pos, bool isLoop = false, bool isFade = false, float fadeTime = 0f, float volume = 1f) // { // if (GlobalSoundsVolume < 0.01f) // { // return -1; // } // AudioInfo audioInfo = new AudioInfo() // { // persist = true, // volume = 1, // fadeInValue = 0.3f, // fadeOutValue = 0.3f, // }; // var audio = _GetUsableAudio(AudioBase.AudioType.Sound, isLoop); // // //错误打印,保护 // if (audio == null) // { // DebugUtil.LogError($"AudioManager, PlaySound By Pos, Cant GetUsableAudio key:{key}"); // return -1; // } // // audio.Stop(); // // audio.SetPos(pos); // audio.SetIsLoop(isLoop); // audio.SetIsSpeak(false); // audio.SetIs3D(true); // if (isFade) // { // audio.SetVolume(0); // audio.PlayWithFade(path, key, fadeTime); // } // else // { // audio.SetVolume(volume); // audio.Play(path, key); // } // // audio.SetIsLoop(isLoop); // return audio.audioID; // } // // private int _PlaySpeakSound(string key, string path, GameObject posObj = null, bool isFade = false, float fadeTime = 0f, float volume = 1f) // { // if (GlobalSpeakVolume < 0.01f) // { // return -1; // } // AudioInfo audioInfo = new AudioInfo() // { // persist = true, // volume = 1, // fadeInValue = 0.3f, // fadeOutValue = 0.3f, // }; // // var audio = _GetUsableAudio(AudioBase.AudioType.Sound, false); // // //错误打印,保护 // if (audio == null) // { // DebugUtil.LogError($"AudioManager, PlaySpeak By Obj, Cant GetUsableAudio key:{key}"); // return -1; // } // // audio.SetPosObj(posObj); // audio.SetIsSpeak(true); // // if (isFade) // { // audio.SetVolume(0); // audio.PlayWithFade(path, key, fadeTime); // } // else // { // audio.SetVolume(volume); // audio.Play(path, key); // } // audio.SetIsLoop(false); // // return audio.audioID; // } // // private int _PlaySpeakSound(string key, string path, Vector3 pos, bool isFade = false, float fadeTime = 0f, float volume = 1f) // { // AudioInfo audioInfo = new AudioInfo() // { // persist = true, // volume = 1, // fadeInValue = 0.3f, // fadeOutValue = 0.3f, // }; // var audio = _GetUsableAudio(AudioBase.AudioType.Sound, false); // audio.SetPos(pos); // audio.SetIsSpeak(true); // if (isFade) // { // audio.SetVolume(0); // audio.PlayWithFade(path, key, fadeTime); // } // else // { // audio.SetVolume(volume); // audio.Play(path, key); // } // audio.SetIsLoop(false); // return audio.audioID; // } // // // private void _PlayAudioByID(int id, string key, EPlayType type, GameObject posObj = null) // { // if (_soundAudioDic.TryGetValue(id, out var audio)) // { // // } // } // #endregion // // #region API // // public int PlayAudio(string key, EPlayType type, GameObject posObj = null, bool loop = false, // bool isFade = false, float fadeInTime = 4f) // { // // #if DEVELOPMENT_BUILD || DEBUG // // DebugUtil.Log("播放音频:{0}, type:{1}", key, type); // // #endif // return _PlayAudio(key, type, posObj, loop, isFade, fadeInTime); // } // // public int PlayAudio(string key, EPlayType type, Vector3 pos, bool loop = false, // bool isFade = false, float fadeInTime = 4f) // { // // #if DEVELOPMENT_BUILD || DEBUG // // DebugUtil.Log("播放音频:{0}, type:{1}", key, type); // // #endif // return _PlayAudio(key, type, pos, loop, isFade, fadeInTime); // } // // public int PlayAudio() // { // return -1; // } // // public void InitLimit(int count0, int count1, int count2) // { // MusicPoolLimit = count0; // SoundPoolLimit = count1; // SpeakPoolLimit = count2; // } // // public AudioCriInst GetAudioByID(EPlayType audioType, int id) // { // if (audioType == EPlayType.Music) // { // if (_musicAudioDic.ContainsKey(id)) // { // return _musicAudioDic[id]; // } // // if (_musicAudioLoopDic.ContainsKey(id)) // { // return _musicAudioLoopDic[id]; // } // // return null; // } // // if (audioType == EPlayType.Sound || audioType == EPlayType.Speak) // { // if (_soundAudioDic.ContainsKey(id)) // { // return _soundAudioDic[id]; // } // // if (_soundAudioLoopDic.ContainsKey(id)) // { // return _soundAudioLoopDic[id]; // } // // return null; // } // // return null; // } // // public AudioCriInst GetAudioByID(int id) // { // if (_musicAudioDic.ContainsKey(id)) // { // return _musicAudioDic[id]; // } // // if (_musicAudioLoopDic.ContainsKey(id)) // { // return _musicAudioLoopDic[id]; // } // // if (_soundAudioDic.ContainsKey(id)) // { // return _soundAudioDic[id]; // } // // if (_soundAudioLoopDic.ContainsKey(id)) // { // return _soundAudioLoopDic[id]; // } // // return null; // } // // public void StopMusicById(int audioID) // { // if (audioID >= 0) // { // if(_musicAudioDic.TryGetValue(audioID, out var audio)) // { // audio.Stop(); // } // // if(_musicAudioLoopDic.TryGetValue(audioID, out var audioLoop)) // { // audioLoop.Stop(); // } // } // } // // public void StopSoundByID(int audioID) // { // if (audioID >= 0) // { // if(_soundAudioDic.TryGetValue(audioID, out var audio)) // { // audio.Stop(); // } // // if(_soundAudioLoopDic.TryGetValue(audioID, out var audioLoop)) // { // audioLoop.Stop(); // } // } // } // // public void StopByID(int audioID) // { // if (audioID >= 0) // { // if(_musicAudioDic.TryGetValue(audioID, out var audio)) // { // audio.Stop(); // } // // if(_musicAudioLoopDic.TryGetValue(audioID, out var audioLoop)) // { // audioLoop.Stop(); // } // // if (_soundAudioDic.TryGetValue(audioID, out var soundAudio)) // { // soundAudio.Stop(); // } // // if(_soundAudioLoopDic.TryGetValue(audioID, out var audioLoop1)) // { // audioLoop1.Stop(); // } // } // // } // // public void StopAllMusic() // { // // if (_bgmAudio != null) // // { // // _bgmAudio.Stop(); // // } // DebugUtil.LogG("StopAllMusic"); // foreach (var kv in _musicAudioDic) // { // var audio = kv.Value; // audio.Stop(); // } // // foreach (var kv in _musicAudioLoopDic) // { // var audio = kv.Value; // audio.Stop(); // } // } // // public void StopAllSounds() // { // DebugUtil.LogG("StopAllSounds"); // foreach (var kv in _soundAudioDic) // { // var audio = kv.Value; // audio.Stop(); // } // // foreach (var kv in _soundAudioLoopDic) // { // var audio = kv.Value; // audio.Stop(); // } // } // // public void StopAllSpeaks() // { // DebugUtil.LogG("StopAllSpeaks"); // foreach (var kv in _soundAudioDic) // { // var audio = kv.Value; // if(audio.IsSpeak) // audio.Stop(); // } // } // // public void StopAll() // { // DebugUtil.LogG("StopAll"); // foreach (var kv in _allAudioDic) // { // var audio = kv.Value; // audio.Stop(); // } // } // // public void StopWithFadeByID(int audioID, float fadeOutTime = 1f) // { // if (audioID >= 0) // { // if(_musicAudioDic.TryGetValue(audioID, out var audio)) // { // audio.StopWithFade(fadeOutTime); // } // // if(_musicAudioLoopDic.TryGetValue(audioID, out var audioLoop)) // { // audioLoop.StopWithFade(fadeOutTime); // } // // if (_soundAudioDic.TryGetValue(audioID, out var soundAudio)) // { // soundAudio.StopWithFade(fadeOutTime); // } // // if(_soundAudioLoopDic.TryGetValue(audioID, out var audioLoop1)) // { // audioLoop1.StopWithFade(fadeOutTime); // } // } // } // // public void ResumeAllMusic() // { // // // if (_bgmAudio != null) // // { // // _bgmAudio.Resume(); // // } // foreach (var kv in _musicAudioDic) // { // var audio = kv.Value; // audio.Resume(); // } // // foreach (var kv in _musicAudioLoopDic) // { // var audio = kv.Value; // audio.Resume(); // } // } // // public void StopBGM() // { // _bgmAudioCri.Stop(); // } // // public void AfterSwitchMainCamera(Camera camera) // { // var listener = camera.GetComponent(); // if (!listener) // { // camera.gameObject.AddComponent(); // } // } // // public CriAtomExAcb GetAcb(string cueSheetName) // { // return CriAtom.GetAcb(cueSheetName); // } // // public AudioCriInst GetStoryAudioInst() // { // return _CreateStoryAudio(); // } // // public void ReleaseStoryAudios() // { // foreach (var kv in _storyAudioDic) // { // var audio = kv.Value; // audio.Stop(); // Object.Destroy(audio.RootGo); // _allAudioDic.Remove(audio.audioID); // } // _storyAudioDic.Clear(); // } // // public void PlayByCueName(int audioID, string cueName, bool isFade = false, float fadeOutTime = 4f) // { // if (_allAudioDic.TryGetValue(audioID, out var audio)) // { // var cueSheet = _GetCriPath(cueName); // if (isFade) // { // audio.PlayWithFade(cueSheet, cueName, fadeOutTime); // } // else // { // audio.Play(cueSheet, cueName); // } // } // } // // public void PlayByCueName(int audioID, string cueName, float fadeInTime, float targetVolume) // { // if (_allAudioDic.TryGetValue(audioID, out var audio)) // { // var cueSheet = _GetCriPath(cueName); // audio.SetTargetVolume(targetVolume); // audio.PlayWithFade(cueSheet, cueName, fadeInTime); // } // } // // public void ReleaseMusicAudios() // { // var musicAudioList = _musicAudioDic.ToList(); // for (int i = musicAudioList.Count - 1; i >= 0; i--) // { // var kv = musicAudioList[i]; // var audio = kv.Value; // var audioID = kv.Key; // audio.Stop(); // _musicAudioDic.Remove(audioID); // _allAudioDic.Remove(audioID); // Object.Destroy(audio.RootGo); // } // // var musicAudioLoopList = _musicAudioLoopDic.ToList(); // for (int i = musicAudioLoopList.Count - 1; i >= 0; i--) // { // var kv = musicAudioLoopList[i]; // var audio = kv.Value; // var audioID = kv.Key; // audio.Stop(); // _musicAudioLoopDic.Remove(audioID); // _allAudioDic.Remove(audioID); // Object.Destroy(audio.RootGo); // } // // _musicAudioObj.Clear(); // _musicAudioDic.Clear(); // _musicAudioLoopObj.Clear(); // _musicAudioLoopDic.Clear(); // } // // public void ReleaseSoundsAudios() // { // var soundAudioList = _soundAudioDic.ToList(); // for (int i = soundAudioList.Count - 1; i >= 0; i--) // { // var kv = soundAudioList[i]; // var audio = kv.Value; // var audioID = kv.Key; // audio.Stop(); // _soundAudioDic.Remove(audioID); // _allAudioDic.Remove(audioID); // Object.Destroy(audio.RootGo); // } // // var soundAudioLoopList = _soundAudioLoopDic.ToList(); // for (int i = soundAudioLoopList.Count - 1; i >= 0; i--) // { // var kv = soundAudioLoopList[i]; // var audio = kv.Value; // var audioID = kv.Key; // audio.Stop(); // _soundAudioLoopDic.Remove(audioID); // _allAudioDic.Remove(audioID); // Object.Destroy(audio.RootGo); // } // // _soundAudioObj.Clear(); // _soundAudioDic.Clear(); // _soundAudioLoopObj.Clear(); // _soundAudioLoopDic.Clear(); // } // // public void ReleaseAllAudios() // { // ReleaseMusicAudios(); // ReleaseSoundsAudios(); // } // // public long GetCueLength(string cueSheet, string cueName) // { // var acb = CriAtom.GetCueSheetInternal(cueSheet).acb; // if (acb.GetCueInfo(cueName, out var cueInfo)) // { // var length = cueInfo.length / 1000; // return length; // } // // return -1; // } // // public void Add2Playing(AudioBase.AudioType audioType, int id, bool isSpeak = false) // { // PlayType type; // if (audioType == AudioBase.AudioType.Music) // { // type = PlayType.Music; // } // else // { // if (isSpeak) // type = PlayType.Speak; // else // { // type = PlayType.Sound; // } // } // var list = _playingLDic[type]; // if (!list.Contains(id)) // { // list.Add(id); // } // } // // public void RemovePlaying(AudioBase.AudioType audioType, int id, bool isSpeak = false) // { // PlayType type; // if (audioType == AudioBase.AudioType.Music) // { // type = PlayType.Music; // } // else // { // if (isSpeak) // type = PlayType.Speak; // else // { // type = PlayType.Sound; // } // } // var list = _playingLDic[type]; // if (list.Contains(id)) // { // list.Remove(id); // } // } // // public void RemovePlaying(int id) // { // foreach (var kv in _playingLDic) // { // var list = kv.Value; // if (list.Contains(id)) // { // list.Remove(id); // } // } // } // #endregion // // } // // public class AudioCriInst : AudioCri // { // public AudioCriInst(AudioType audioType, GameObject rootGo, GameObject posGo, AudioInfo audioInfo = new(), // bool loop = false, bool is3D = false):base(audioType, rootGo, posGo, audioInfo, loop, is3D) // { // // } // }