| | |
| | | [SerializeField] Slider musicSlider; |
| | | [SerializeField] Slider soundEffectSlider; |
| | | |
| | | // 静音音乐 |
| | | [SerializeField] Toggle muteMusic; |
| | | |
| | | // 静音音效 |
| | | [SerializeField] Toggle muteSoundEffect; |
| | | |
| | | |
| | | // 主线战斗 |
| | | [SerializeField] Toggle toggleStory; |
| | | // 非主线战斗 |
| | | [SerializeField] Toggle toggleNonStory; |
| | | |
| | | // 伤害飘字 |
| | | [SerializeField] Toggle toggleDamageTips; |
| | | // 非伤害飘字 |
| | | [SerializeField] Toggle toggleNonDamageTips; |
| | | // buff飘字 |
| | | [SerializeField] Toggle toggleBuffFloatingTips; |
| | | // buff图标显示 |
| | | [SerializeField] Toggle toggleBuffIconShow; |
| | | |
| | | private BattlePerformSwitch currentSwitch; |
| | | |
| | | protected override void InitComponent() |
| | | { |
| | | base.InitComponent(); |
| | |
| | | protected override void OnPreOpen() |
| | | { |
| | | base.OnPreOpen(); |
| | | |
| | | // 音量滑块 |
| | | musicSlider.onValueChanged.RemoveListener(OnSliderBgMusic); |
| | | musicSlider.onValueChanged.AddListener(OnSliderBgMusic); |
| | | soundEffectSlider.onValueChanged.RemoveListener(OnSliderSoundEffect); |
| | |
| | | |
| | | musicSlider.value = SystemSetting.Instance.GetSoundVolume(); |
| | | soundEffectSlider.value = SystemSetting.Instance.GetSoundEffect(); |
| | | |
| | | // 静音开关 |
| | | muteMusic.onValueChanged.RemoveListener(OnMuteMusicChanged); |
| | | muteMusic.onValueChanged.AddListener(OnMuteMusicChanged); |
| | | muteSoundEffect.onValueChanged.RemoveListener(OnMuteSoundEffectChanged); |
| | | muteSoundEffect.onValueChanged.AddListener(OnMuteSoundEffectChanged); |
| | | |
| | | muteMusic.isOn = SystemSetting.Instance.GetMuteMusic(); |
| | | muteSoundEffect.isOn = SystemSetting.Instance.GetMuteSoundEffect(); |
| | | |
| | | // 应用静音状态 |
| | | SoundPlayer.Instance.musicAudioSource.mute = muteMusic.isOn; |
| | | |
| | | // 战斗类型切换(互斥) |
| | | toggleStory.onValueChanged.RemoveListener(OnToggleStoryChanged); |
| | | toggleStory.onValueChanged.AddListener(OnToggleStoryChanged); |
| | | toggleNonStory.onValueChanged.RemoveListener(OnToggleNonStoryChanged); |
| | | toggleNonStory.onValueChanged.AddListener(OnToggleNonStoryChanged); |
| | | |
| | | // 默认选中主线战斗 |
| | | toggleStory.isOn = true; |
| | | toggleNonStory.isOn = false; |
| | | currentSwitch = BattleSwitch.storySwitch; |
| | | |
| | | // 战斗表现开关 |
| | | toggleDamageTips.onValueChanged.RemoveListener(OnToggleDamageTipsChanged); |
| | | toggleDamageTips.onValueChanged.AddListener(OnToggleDamageTipsChanged); |
| | | toggleNonDamageTips.onValueChanged.RemoveListener(OnToggleNonDamageTipsChanged); |
| | | toggleNonDamageTips.onValueChanged.AddListener(OnToggleNonDamageTipsChanged); |
| | | toggleBuffFloatingTips.onValueChanged.RemoveListener(OnToggleBuffFloatingTipsChanged); |
| | | toggleBuffFloatingTips.onValueChanged.AddListener(OnToggleBuffFloatingTipsChanged); |
| | | toggleBuffIconShow.onValueChanged.RemoveListener(OnToggleBuffIconShowChanged); |
| | | toggleBuffIconShow.onValueChanged.AddListener(OnToggleBuffIconShowChanged); |
| | | |
| | | // 初始化战斗表现开关的状态 |
| | | RefreshBattlePerformToggles(); |
| | | } |
| | | |
| | | protected override void OnPreClose() |
| | |
| | | { |
| | | SystemSetting.Instance.SetSoundVolume(arg0); |
| | | } |
| | | |
| | | private void OnMuteMusicChanged(bool value) |
| | | { |
| | | SystemSetting.Instance.SetMuteMusic(value); |
| | | SoundPlayer.Instance.musicAudioSource.mute = value; |
| | | } |
| | | |
| | | private void OnMuteSoundEffectChanged(bool value) |
| | | { |
| | | SystemSetting.Instance.SetMuteSoundEffect(value); |
| | | // 音效静音可以通过控制音量实现,但不影响slider的值 |
| | | // 这里需要控制所有音效源,可以使用SoundPlayer的全局控制 |
| | | } |
| | | |
| | | private void OnToggleStoryChanged(bool value) |
| | | { |
| | | if (value) |
| | | { |
| | | // ToggleGroup 会自动处理互斥,不需要手动设置另一个为 false |
| | | currentSwitch = BattleSwitch.storySwitch; |
| | | RefreshBattlePerformToggles(); |
| | | } |
| | | } |
| | | |
| | | private void OnToggleNonStoryChanged(bool value) |
| | | { |
| | | if (value) |
| | | { |
| | | // ToggleGroup 会自动处理互斥,不需要手动设置另一个为 false |
| | | currentSwitch = BattleSwitch.nonStorySwitch; |
| | | RefreshBattlePerformToggles(); |
| | | } |
| | | } |
| | | |
| | | private void RefreshBattlePerformToggles() |
| | | { |
| | | if (currentSwitch == null) |
| | | return; |
| | | |
| | | // 临时移除监听器以避免循环触发 |
| | | toggleDamageTips.onValueChanged.RemoveListener(OnToggleDamageTipsChanged); |
| | | toggleNonDamageTips.onValueChanged.RemoveListener(OnToggleNonDamageTipsChanged); |
| | | toggleBuffFloatingTips.onValueChanged.RemoveListener(OnToggleBuffFloatingTipsChanged); |
| | | toggleBuffIconShow.onValueChanged.RemoveListener(OnToggleBuffIconShowChanged); |
| | | |
| | | // 更新UI状态 |
| | | toggleDamageTips.isOn = currentSwitch.DamageTips; |
| | | toggleNonDamageTips.isOn = currentSwitch.NonDamageTips; |
| | | toggleBuffFloatingTips.isOn = currentSwitch.BuffAction; |
| | | toggleBuffIconShow.isOn = currentSwitch.BuffIcon; |
| | | |
| | | // 重新添加监听器 |
| | | toggleDamageTips.onValueChanged.AddListener(OnToggleDamageTipsChanged); |
| | | toggleNonDamageTips.onValueChanged.AddListener(OnToggleNonDamageTipsChanged); |
| | | toggleBuffFloatingTips.onValueChanged.AddListener(OnToggleBuffFloatingTipsChanged); |
| | | toggleBuffIconShow.onValueChanged.AddListener(OnToggleBuffIconShowChanged); |
| | | } |
| | | |
| | | private void OnToggleDamageTipsChanged(bool value) |
| | | { |
| | | if (currentSwitch != null) |
| | | { |
| | | currentSwitch.DamageTips = value; |
| | | } |
| | | } |
| | | |
| | | private void OnToggleNonDamageTipsChanged(bool value) |
| | | { |
| | | if (currentSwitch != null) |
| | | { |
| | | currentSwitch.NonDamageTips = value; |
| | | } |
| | | } |
| | | |
| | | private void OnToggleBuffFloatingTipsChanged(bool value) |
| | | { |
| | | if (currentSwitch != null) |
| | | { |
| | | currentSwitch.BuffAction = value; |
| | | } |
| | | } |
| | | |
| | | private void OnToggleBuffIconShowChanged(bool value) |
| | | { |
| | | if (currentSwitch != null) |
| | | { |
| | | currentSwitch.BuffIcon = value; |
| | | } |
| | | } |
| | | } |