hch
2025-12-04 2e8a3a8ebadbf1d9380806f7b3465aee434647c1
Merge branch 'master' of http://mobile.secondworld.net.cn:10010/r/Project_SG_scripts
1个文件已修改
32 ■■■■■ 已修改文件
Main/System/Battle/Sound/BattleSoundManager.cs 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/Battle/Sound/BattleSoundManager.cs
@@ -84,7 +84,6 @@
        {
            return;
        }
        PlaySound(audioId, pitchControl);
    }
    
@@ -132,10 +131,10 @@
        {
            source.pitch = 1.0f;
        }
        
        // 播放音效
        source.PlayOneShot(audioClip);
        // 设置音频剪辑并播放(使用 Play() 而不是 PlayOneShot(),以便 isPlaying 状态正确)
        source.clip = audioClip;
        source.Play();
        
        // 标记为活跃
        if (!activeAudioSources.Contains(source))
@@ -198,15 +197,13 @@
        if (config == null)
            return null;
        
        // ===== 修复:添加 Audio/ 前缀 =====
        AudioClip audioClip = BattleResManager.Instance.GetAudioResource(
            "Audio/" + config.Folder,  // ← 修复:添加 Audio/ 前缀
            config.Audio,
            battleField.guid
        AudioClip audioClip = ResManager.Instance.LoadAsset<AudioClip>(
            "Audio/" + config.Folder,
            config.Audio,
            false
        );
        
        return audioClip;
        // ================================
    }
    
    /// <summary>
@@ -260,15 +257,28 @@
                activeAudioSources.RemoveAt(i);
                if (source != null)
                {
                    // 清空 clip 引用,释放内存
                    source.clip = null;
                    audioSourcePool.Enqueue(source);
                }
            }
        }
        
        // 清理 audioIdToSources 中已停止播放的 AudioSource
        var keysToRemove = new List<int>();
        foreach (var kvp in audioIdToSources)
        {
            kvp.Value.RemoveAll(s => s == null || !s.isPlaying);
            if (kvp.Value.Count == 0)
            {
                keysToRemove.Add(kvp.Key);
            }
        }
        // 移除空的音效ID记录
        foreach (var key in keysToRemove)
        {
            audioIdToSources.Remove(key);
        }
    }
    
@@ -322,6 +332,8 @@
        {
            if (source != null)
            {
                // 清空 clip 引用
                source.clip = null;
                audioSourcePool.Enqueue(source);
            }
        }