| | |
| | | { |
| | | if (m_Instance == null) |
| | | { |
| | | CreateSoundPlayer(); |
| | | CreateSoundPlayer().Forget(); |
| | | } |
| | | } |
| | | } |
| | |
| | | |
| | | public void Init() |
| | | { |
| | | //初始化用 |
| | | |
| | | } |
| | | |
| | | public static void CreateSoundPlayer() |
| | | { |
| | | if (m_Instance != null) |
| | | { |
| | | return; |
| | | } |
| | | |
| | | var gameObject = GameObject.Instantiate(BuiltInLoader.LoadPrefab("SoundPlayer")); |
| | | m_Instance = gameObject.GetComponent<SoundPlayer>(); |
| | | m_Instance.name = "SoundPlayer"; |
| | | m_Instance.SetActive(true); |
| | | DontDestroyOnLoad(gameObject); |
| | | Debug.Log("CreateSoundPlayer"); |
| | | } |
| | | |
| | | public static async UniTask CreateSoundPlayerAsync() |
| | | public static async UniTask CreateSoundPlayer() |
| | | { |
| | | if (m_Instance != null) |
| | | { |
| | |
| | | m_Instance.name = "SoundPlayer"; |
| | | m_Instance.SetActive(true); |
| | | DontDestroyOnLoad(gameObject); |
| | | Debug.Log("CreateSoundPlayer"); |
| | | Debug.Log("SoundPlayer 创建完成"); |
| | | } |
| | | |
| | | public void PlayBackGroundMusic(int _audioId) |
| | | public async UniTask PlayBackGroundMusic(int _audioId) |
| | | { |
| | | if (_audioId <= 0) |
| | | { |
| | |
| | | var config = AudioConfig.Get(_audioId); |
| | | if (config != null) |
| | | { |
| | | AudioLoader.LoadAudioAsync(config.Folder, config.Audio, (bool _ok, UnityEngine.Object _object) => |
| | | AudioLoader.LoadAudio(config.Folder, config.Audio).ContinueWith(clip => |
| | | { |
| | | if (_ok && _object != null) |
| | | if (clip != null) |
| | | { |
| | | clip = _object as AudioClip; |
| | | if (clip != null) |
| | | if (!musicAudioClipDict.ContainsKey(_audioId)) |
| | | { |
| | | if (!musicAudioClipDict.ContainsKey(_audioId)) |
| | | { |
| | | musicAudioClipDict[_audioId] = clip; |
| | | } |
| | | |
| | | StartCoroutine(Co_BackGroundMusicFadeOutIn(clip, false)); |
| | | musicAudioClipDict[_audioId] = clip; |
| | | } |
| | | |
| | | StartCoroutine(Co_BackGroundMusicFadeOutIn(clip, false)); |
| | | } |
| | | }); |
| | | }).Forget(); |
| | | } |
| | | } |
| | | else |
| | |
| | | } |
| | | |
| | | int backGroudAudioIdRef = 0; |
| | | public void PlayBackGroundMusicOneShot(int _audioId) |
| | | public async void PlayBackGroundMusicOneShot(int _audioId) |
| | | { |
| | | var config = AudioConfig.Get(_audioId); |
| | | if (config == null) |
| | |
| | | return; |
| | | } |
| | | |
| | | var clip = AudioLoader.LoadAudio(config.Folder, config.Audio); |
| | | var clip = await AudioLoader.LoadAudio(config.Folder, config.Audio); |
| | | if (clip == null) |
| | | { |
| | | return; |
| | |
| | | if (key != _exclude) |
| | | { |
| | | var config = AudioConfig.Get(key); |
| | | #pragma warning disable CS0618 // Obsolete — sync legacy unload |
| | | ResManager.Instance.UnloadAsset("Audio/" + config.Folder, config.Audio); |
| | | #pragma warning restore CS0618 |
| | | } |
| | | } |
| | | |
| | |
| | | { |
| | | await UniTask.Delay(1); |
| | | if (this == null) return; // destroyed during await |
| | | PlayUIAudio(_audioId); |
| | | await PlayUIAudio(_audioId); |
| | | } |
| | | |
| | | public void PlayUIAudio(int _audioId) |
| | | public async UniTask PlayUIAudio(int _audioId) |
| | | { |
| | | if (_audioId <= 0) |
| | | { |
| | |
| | | var config = AudioConfig.Get(_audioId); |
| | | if (config != null) |
| | | { |
| | | clip = AudioLoader.LoadAudio(config.Folder, config.Audio); |
| | | clip = await AudioLoader.LoadAudio(config.Folder, config.Audio); |
| | | if (clip != null) |
| | | { |
| | | if (commonUseAudioSet.Contains(_audioId)) |
| | |
| | | } |
| | | } |
| | | |
| | | public void PlayAudio(AudioSource _source, int _audioId) |
| | | public async void PlayAudio(AudioSource _source, int _audioId) |
| | | { |
| | | if (_audioId <= 0) |
| | | { |
| | |
| | | var config = AudioConfig.Get(_audioId); |
| | | if (config != null) |
| | | { |
| | | clip = AudioLoader.LoadAudio(config.Folder, config.Audio); |
| | | clip = await AudioLoader.LoadAudio(config.Folder, config.Audio); |
| | | if (clip != null) |
| | | { |
| | | if (commonUseAudioSet.Contains(_audioId)) |
| | |
| | | } |
| | | } |
| | | |
| | | public void PlayNewBieAudio(int _audioId) |
| | | public async UniTask PlayNewBieAudio(int _audioId) |
| | | { |
| | | if (_audioId <= 0) |
| | | { |
| | |
| | | var config = AudioConfig.Get(_audioId); |
| | | if (config != null) |
| | | { |
| | | clip = AudioLoader.LoadAudio(config.Folder, config.Audio); |
| | | clip = await AudioLoader.LoadAudio(config.Folder, config.Audio); |
| | | } |
| | | |
| | | if (clip != null) |
| | |
| | | } |
| | | } |
| | | |
| | | public void PlayNpcAudio(int _audioId) |
| | | public async void PlayNpcAudio(int _audioId) |
| | | { |
| | | if (_audioId <= 0) |
| | | { |
| | |
| | | var config = AudioConfig.Get(_audioId); |
| | | if (config != null) |
| | | { |
| | | clip = AudioLoader.LoadAudio(config.Folder, config.Audio); |
| | | clip = await AudioLoader.LoadAudio(config.Folder, config.Audio); |
| | | } |
| | | |
| | | if (clip != null) |
| | |
| | | |
| | | public void PlayLoginMusic() |
| | | { |
| | | var loginMusic = BuiltInLoader.LoadMusic("login"); |
| | | if (!m_MusicAudioSource.isPlaying || m_MusicAudioSource.clip != loginMusic) |
| | | { |
| | | StartCoroutine(Co_BackGroundMusicFadeOutIn(loginMusic, false)); |
| | | } |
| | | BuiltInLoader.LoadMusicAsync("login").ContinueWith(loginMusic => |
| | | { |
| | | if (this == null) return; |
| | | if (!m_MusicAudioSource.isPlaying || m_MusicAudioSource.clip != loginMusic) |
| | | { |
| | | StartCoroutine(Co_BackGroundMusicFadeOutIn(loginMusic, false)); |
| | | } |
| | | }).Forget(); |
| | | } |
| | | |
| | | public async UniTask PlayLoginMusicAsync() |
| | |
| | | IEnumerator Co_DelayPlayBackGrondMusic(float _delay, int _audioId) |
| | | { |
| | | yield return new WaitForSeconds(_delay); |
| | | PlayBackGroundMusic(_audioId); |
| | | PlayBackGroundMusic(_audioId).Forget(); |
| | | } |
| | | } |