yyl
2026-03-04 bc1cb6da854cb2e9144f10ed55330a537ecdca16
Main/System/Battle/Sound/BattleSoundManager.cs
@@ -122,19 +122,19 @@
    /// 播放特效音效
    /// </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)
@@ -150,7 +150,7 @@
            return;
        }
        
        var audioClip = GetAudioClip(audioId);
        var audioClip = await GetAudioClip(audioId);
        if (audioClip == null)
        {
            Debug.Log($"<color=red>BattleSoundManager [{battleField.guid}]: 无法加载音效 {audioId}</color>");
@@ -203,11 +203,11 @@
    /// <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>
@@ -226,26 +226,6 @@
        
        // 检查同时播放的数量
        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>