| | |
| | | /// 播放特效音效 |
| | | /// </summary> |
| | | /// <param name="audioId">音效ID</param> |
| | | public void PlayEffectSound(int audioId, bool pitchControl = true) |
| | | public async UniTask PlayEffectSound(int audioId, bool pitchControl = true) |
| | | { |
| | | if (audioId <= 0) |
| | | { |
| | | return; |
| | | } |
| | | PlaySound(audioId, pitchControl); |
| | | await PlaySound(audioId, pitchControl); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 核心播放方法 |
| | | /// </summary> |
| | | private void PlaySound(int audioId, bool pitchControl) |
| | | private async UniTask PlaySound(int audioId, bool pitchControl) |
| | | { |
| | | // 检查是否有焦点,无焦点时不播放 |
| | | if (!hasFocus) |
| | |
| | | return; |
| | | } |
| | | |
| | | var audioClip = GetAudioClip(audioId); |
| | | var audioClip = await GetAudioClip(audioId); |
| | | if (audioClip == null) |
| | | { |
| | | Debug.Log($"<color=red>BattleSoundManager [{battleField.guid}]: 无法加载音效 {audioId}</color>"); |
| | |
| | | /// <summary> |
| | | /// 获取音频剪辑(每次从ResManager加载,依赖其内部缓存) |
| | | /// </summary> |
| | | private AudioClip GetAudioClip(int audioId) |
| | | private async UniTask<AudioClip> GetAudioClip(int audioId) |
| | | { |
| | | // 不在此处缓存,直接从 ResManager 加载 |
| | | // ResManager 内部会处理缓存,这样可以避免 AudioClip 失效问题 |
| | | return LoadAudioClip(audioId); |
| | | return await LoadAudioClipAsync(audioId); |
| | | } |
| | | |
| | | /// <summary> |
| | |
| | | |
| | | // 检查同时播放的数量 |
| | | return sources.Count < MAX_SAME_AUDIO_COUNT; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 加载音频剪辑 |
| | | /// </summary> |
| | | private AudioClip LoadAudioClip(int audioId) |
| | | { |
| | | var config = AudioConfig.Get(audioId); |
| | | if (config == null) |
| | | return null; |
| | | |
| | | #pragma warning disable CS0618 // Obsolete — sync legacy fallback, use LoadAudioClipAsync |
| | | AudioClip audioClip = ResManager.Instance.LoadAsset<AudioClip>( |
| | | "Audio/" + config.Folder, |
| | | config.Audio, |
| | | false |
| | | ); |
| | | #pragma warning restore CS0618 |
| | | |
| | | return audioClip; |
| | | } |
| | | |
| | | /// <summary> |