using TMPro; using UnityEngine; using Button = UnityEngine.UI.Button; using Image = UnityEngine.UI.Image; using Slider = UnityEngine.UI.Slider; using Gameplay.Performance; public class UI_SettingController : UIWindow { public Button Button_Close; public Image Image_ScreenSet; public TMP_Text Text_ScreenSet; public TMP_Text Text_ImageQuality; public Button Button_LowQ1; public Button Button_LowQ2; public Button Button_HighQ1; public Button Button_HighQ2; public Button Button_60F; public Image Image_YPot_60; public Image Image_BPot_60; public Button Button_30F; public Image Image_YPot_30; public Image Image_BPot_30; public Image Image_SoundSet; public TMP_Text Text_SoundSet; public TMP_Text Text_BGM; public Button Button_Open_BGM; public Button Button_Close_BGM; public Slider Slider_HaveVoice_BGM; public TMP_Text Text_Rate_BGM; public Slider Slider_NoVoice_BGM; public TMP_Text Text_Effect; public Button Button_Open_Effect; public Button Button_Close_Effect; public Slider Slider_HaveVoice_Effect; public TMP_Text Text_Rate_Effect; public Slider Slider_NoVoice_Effect; public TMP_Text Text_Talk; public Button Button_Open_Talk; public Button Button_Close_Talk; public Slider Slider_HaveVoice_Talk; public TMP_Text Text_Rate_Talk; public Slider Slider_NoVoice_Talk; public Button Button_Open_Map; public Button Button_Close_Map; public Button Button_Cancel; public Button Button_Save; private bool _isHighQuality; private int _frameRate; private bool _isCloseBGM; private bool _isCloseEffect; private bool _isCloseTalk; private float _valueBGM; private float _valueEffect; private float _valueTalk; private bool _isShowGrid; public override void OnAwake() { UI_SettingBinder.GetComponents(this); Init(); BindButton(Button_LowQ2, LowQuality); BindButton(Button_HighQ2, HighQuality); BindButton(Button_60F, Set60FrameRate); BindButton(Button_30F, Set30FrameRate); //静音 BindButton(Button_Close_BGM, CloseBGM); BindButton(Button_Close_Effect, CloseEffect); BindButton(Button_Close_Talk, CloseTalk); //取消静音 BindButton(Button_Open_BGM, OpenBGM); BindButton(Button_Open_Effect, OpenEffect); BindButton(Button_Open_Talk, OpenTalk); BindButton(Button_Open_Map, delegate { Button_Close_Map.gameObject.SetActive(true); }); BindButton(Button_Close_Map, delegate { Button_Close_Map.gameObject.SetActive(false); }); BindButton(Button_Close, () => CloseWindow()); BindButton(Button_Cancel, Cancel); BindButton(Button_Save, Save); } private void Init() { _valueBGM = AudioManager.Instance.GlobalMusicVolume; _valueEffect = AudioManager.Instance.GlobalSoundsVolume; _valueTalk = 1f; InitSlider(); } private void InitSlider() { Slider_NoVoice_BGM.interactable = false; Slider_NoVoice_Effect.interactable = false; Slider_NoVoice_Talk.interactable = false; Slider_HaveVoice_BGM.value = _valueBGM; Slider_NoVoice_BGM.value = _valueBGM; Slider_HaveVoice_Effect.value = _valueEffect; Slider_NoVoice_Effect.value = _valueEffect; //TODO: 语音初始化 //Slider_HaveVoice_Talk.value = AudioManager.Instance...; //Slider_NoVoice_Talk.value = AudioManager.Instance...; Slider_HaveVoice_BGM.onValueChanged.AddListener(OnValueChangedBGM); Slider_HaveVoice_Effect.onValueChanged.AddListener(OnValueChangedEffect); Slider_HaveVoice_Talk.onValueChanged.AddListener(OnValueChangedTalk); } private void HighQuality() { //TODO 高画质接口 Button_LowQ1.gameObject.SetActive(false); Button_LowQ2.gameObject.SetActive(true); Button_HighQ1.gameObject.SetActive(true); Button_HighQ2.gameObject.SetActive(false); } private void LowQuality() { //TODO 低画质接口 Button_LowQ1.gameObject.SetActive(true); Button_LowQ2.gameObject.SetActive(false); Button_HighQ1.gameObject.SetActive(false); Button_HighQ2.gameObject.SetActive(true); } private void Set60FrameRate() { PerformanceManager.instance.SetFrameRate(60); Image_BPot_60.gameObject.SetActive(false); Image_BPot_30.gameObject.SetActive(true); } private void Set30FrameRate() { PerformanceManager.instance.SetFrameRate(30); Image_BPot_60.gameObject.SetActive(true); Image_BPot_30.gameObject.SetActive(false); } private void CloseBGM() { _isCloseBGM = true; Button_Open_BGM.gameObject.SetActive(true); Slider_NoVoice_BGM.gameObject.SetActive(true); Slider_HaveVoice_BGM.gameObject.SetActive(false); } private void CloseEffect() { _isCloseEffect = true; Button_Open_Effect.gameObject.SetActive(true); Slider_NoVoice_Effect.gameObject.SetActive(true); Slider_HaveVoice_Effect.gameObject.SetActive(false); } private void CloseTalk() { _isCloseTalk = true; Button_Open_Talk.gameObject.SetActive(true); Slider_NoVoice_Talk.gameObject.SetActive(true); Slider_HaveVoice_Talk.gameObject.SetActive(false); } private void OpenBGM() { _isCloseBGM = false; Button_Open_BGM.gameObject.SetActive(false); Slider_NoVoice_BGM.gameObject.SetActive(false); Slider_HaveVoice_BGM.gameObject.SetActive(true); if (Slider_HaveVoice_BGM.value <= 0) Slider_HaveVoice_BGM.value = 0.5f; } private void OpenEffect() { _isCloseEffect = false; Button_Open_Effect.gameObject.SetActive(false); Slider_NoVoice_Effect.gameObject.SetActive(false); Slider_HaveVoice_Effect.gameObject.SetActive(true); if (Slider_HaveVoice_Effect.value <= 0) Slider_HaveVoice_Effect.value = 0.5f; } private void OpenTalk() { _isCloseTalk = false; Button_Open_Talk.gameObject.SetActive(false); Slider_NoVoice_Talk.gameObject.SetActive(false); Slider_HaveVoice_Talk.gameObject.SetActive(true); if (Slider_HaveVoice_Talk.value <= 0) Slider_HaveVoice_Talk.value = 0.5f; } private void OnValueChangedBGM(float value) { _valueBGM = value; Text_Rate_BGM.text = Mathf.RoundToInt(value * 100).ToString(); Slider_NoVoice_BGM.value = Slider_HaveVoice_BGM.value; if (value <= 0) CloseBGM(); } private void OnValueChangedEffect(float value) { _valueEffect = value; Text_Rate_Effect.text = Mathf.RoundToInt(value * 100).ToString(); Slider_NoVoice_Effect.value = Slider_HaveVoice_Effect.value; if (value <= 0) CloseEffect(); } private void OnValueChangedTalk(float value) { _valueTalk = value; Text_Rate_Talk.text = Mathf.RoundToInt(value * 100).ToString(); Slider_NoVoice_Talk.value = Slider_HaveVoice_Effect.value; if (value <= 0) CloseTalk(); } private void Save() { AudioManager.Instance.GlobalMusicVolume = _isCloseBGM ? 0 : _valueBGM; AudioManager.Instance.GlobalSoundsVolume = _isCloseEffect ? 0 : _valueEffect; // ... AudioManager.Instance.GlobalTalkVolume = _valueTalk; } private void Cancel() { Slider_HaveVoice_BGM.value = AudioManager.Instance.GlobalMusicVolume; Slider_HaveVoice_Effect.value = AudioManager.Instance.GlobalSoundsVolume; Slider_NoVoice_BGM.value = AudioManager.Instance.GlobalMusicVolume; Slider_NoVoice_Effect.value = AudioManager.Instance.GlobalMusicVolume; } }