yyl
1 天以前 00bf2f3db6bb031a21fe0463b0a72b43377233bd
Main/System/Battle/Sound/BattleSoundManager.cs
@@ -53,6 +53,12 @@
        UnityEditor.EditorApplication.pauseStateChanged += OnEditorPauseStateChanged;
#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>
@@ -458,6 +493,9 @@
            battleField.OnSpeedRatioChange -= OnSpeedRatioChanged;
            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
        // 取消订阅编辑器暂停事件