yyl
昨天 00bf2f3db6bb031a21fe0463b0a72b43377233bd
111 音效问题
4个文件已修改
47 ■■■■■ 已修改文件
Main/Common/EventName.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/Battle/BattleField/BattleField.cs 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/Battle/Sound/BattleSoundManager.cs 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/SystemSetting/SystemSetting.cs 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/Common/EventName.cs
@@ -20,4 +20,8 @@
    public const string BATTLE_TIANZI_REFRESH_HP = "BATTLE_TIANZI_REFRESH_HP";//天子考验 刷新血量
    
    public const string BATTLE_CLICK_HERO = "BATTLE_CLICK_HERO";//点击英雄
    public const string SOUND_EFFECT_VOLUME_CHANGE = "SOUND_EFFECT_VOLUME_CHANGE";    //音效声音大小调整
    public const string SOUND_EFFECT_MUTE_CHANGE = "SOUND_EFFECT_MUTE_CHANGE";//    音效静音调整
}
Main/System/Battle/BattleField/BattleField.cs
@@ -144,6 +144,8 @@
        battleEffectMgr.Init(this);
        battleTweenMgr.Init(this);
        recordPlayer.Init(this);
        soundManager.Init();
        if (blueTeamList == null)
        {
@@ -351,6 +353,7 @@
        battleEffectMgr.Release();
        battleTweenMgr.Release();
        recordPlayer.Release();
        soundManager.Release();
        // 清理死亡处理记录
        processingDeathObjIds.Clear();
Main/System/Battle/Sound/BattleSoundManager.cs
@@ -54,6 +54,12 @@
#endif
    }
    
    public void Init()
    {
        EventBroadcast.Instance.AddListener<bool>(EventName.SOUND_EFFECT_MUTE_CHANGE, OnSoundEffectMuteChange);
        EventBroadcast.Instance.AddListener<float>(EventName.SOUND_EFFECT_VOLUME_CHANGE, OnSoundEffectVolumeChange);
    }
#if UNITY_EDITOR
    /// <summary>
    /// 编辑器暂停状态变化回调
@@ -166,6 +172,7 @@
        
        // 设置音量(使用音效音量设置)
        source.volume = SystemSetting.Instance.GetSoundEffect();
        source.mute = SystemSetting.Instance.GetMuteSoundEffect();
        
        // 设置播放速度,使用pitch来控制
        // pitch范围建议在0.5-2.0之间以避免失真
@@ -358,6 +365,34 @@
        }
    }
    
    private void OnSoundEffectMuteChange(bool isMute)
    {
        // Debug.Log($"<color=magenta>BattleSoundManager [{battleField.guid}]: OnSoundEffectMuteChange({isMute}) - 当前活跃音效数={activeAudioSources.Count}</color>");
        // 更新所有正在播放的音效的静音状态
        foreach (var source in activeAudioSources)
        {
            if (source != null)
            {
                source.mute = isMute;
            }
        }
    }
    private void OnSoundEffectVolumeChange(float volume)
    {
        // Debug.Log($"<color=magenta>BattleSoundManager [{battleField.guid}]: OnSoundEffectVolumeChange({volume}) - 当前活跃音效数={activeAudioSources.Count}</color>");
        // 更新所有正在播放的音效的音量
        foreach (var source in activeAudioSources)
        {
            if (source != null)
            {
                source.volume = volume;
            }
        }
    }
    /// <summary>
    /// 焦点变化回调
    /// </summary>
@@ -459,6 +494,9 @@
            battleField.OnFocusChange -= OnFocusChanged;
        }
        
        EventBroadcast.Instance.RemoveListener<bool>(EventName.SOUND_EFFECT_MUTE_CHANGE, OnSoundEffectMuteChange);
        EventBroadcast.Instance.RemoveListener<float>(EventName.SOUND_EFFECT_VOLUME_CHANGE, OnSoundEffectVolumeChange);
#if UNITY_EDITOR
        // 取消订阅编辑器暂停事件
        UnityEditor.EditorApplication.pauseStateChanged -= OnEditorPauseStateChanged;
Main/System/SystemSetting/SystemSetting.cs
@@ -51,6 +51,7 @@
    public void SetSoundEffect(float value)
    {
        LocalSave.SetFloat(SOUND_EFFECT_KEY, Mathf.Clamp01(value));
        EventBroadcast.Instance.Broadcast(EventName.SOUND_EFFECT_VOLUME_CHANGE, value);
    }
    public float GetSoundEffect()
@@ -73,6 +74,7 @@
    {
        LocalSave.SetBool(MUTE_SOUND_EFFECT_KEY, _mute);
        SoundPlayer.Instance.MuteSoundEffect(_mute);
        EventBroadcast.Instance.Broadcast(EventName.SOUND_EFFECT_MUTE_CHANGE, _mute);
    }
    public bool GetMuteSoundEffect()