using TMPro; using UnityEngine; using Button = UnityEngine.UI.Button; using Image = UnityEngine.UI.Image; using Slider = UnityEngine.UI.Slider; 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; public TMP_Text Text_PlayerID; private GameSettingData _settings; public override void OnAwake() { UI_SettingBinder.GetComponents(this); BindButton(Button_Close, () => CloseWindow()); 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, OpenGrid); BindButton(Button_Close_Map, CloseGrid); BindButton(Button_Cancel, Cancel); BindButton(Button_Save, Save); Slider_HaveVoice_BGM.onValueChanged.AddListener(OnValueChangedBGM); Slider_HaveVoice_Effect.onValueChanged.AddListener(OnValueChangedEffect); Slider_HaveVoice_Talk.onValueChanged.AddListener(OnValueChangedTalk); Slider_NoVoice_BGM.interactable = false; Slider_NoVoice_Effect.interactable = false; Slider_NoVoice_Talk.interactable = false; Init(); } public void OnEnable() { Init(); } private void Init() { _settings = new GameSettingData(GameSettingManager.Instance.SettingData); Text_PlayerID.text = $"账号ID:{Gameplay.Net.Actor.Instance.Login.AccountID}"; InitSlider(); if (_settings.PerformanceID > 1) HighQuality(); else LowQuality(); if (_settings.FrameRate.Equals(30)) Set30FrameRate(); else Set60FrameRate(); if (_settings.IsOpenGrid) CloseGrid(); else OpenGrid(); } private void InitSlider() { Slider_HaveVoice_BGM.value = _settings.BGMValue; Slider_NoVoice_BGM.value = _settings.BGMValue; Slider_HaveVoice_Effect.value = _settings.EffectValue; Slider_NoVoice_Effect.value = _settings.EffectValue; Slider_HaveVoice_Talk.value = _settings.TalkValue; Slider_NoVoice_Talk.value = _settings.TalkValue; if (_settings.BGMValue <= 0) CloseBGM(); else OpenBGM(); if (_settings.EffectValue <= 0) CloseEffect(); else OpenEffect(); if (_settings.TalkValue <= 0) CloseTalk(); else OpenTalk(); } private void HighQuality() { if (Application.platform == RuntimePlatform.IPhonePlayer || Application.platform == RuntimePlatform.Android) _settings.PerformanceID = 2; else _settings.PerformanceID = 3; Button_LowQ1.gameObject.SetActive(false); Button_LowQ2.gameObject.SetActive(true); Button_HighQ1.gameObject.SetActive(true); Button_HighQ2.gameObject.SetActive(false); } private void LowQuality() { _settings.PerformanceID = 1; Button_LowQ1.gameObject.SetActive(true); Button_LowQ2.gameObject.SetActive(false); Button_HighQ1.gameObject.SetActive(false); Button_HighQ2.gameObject.SetActive(true); } private void Set60FrameRate() { _settings.FrameRate = 60; Image_BPot_60.gameObject.SetActive(false); Image_BPot_30.gameObject.SetActive(true); } private void Set30FrameRate() { _settings.FrameRate = 30; Image_BPot_60.gameObject.SetActive(true); Image_BPot_30.gameObject.SetActive(false); } private void CloseBGM() { _settings.BGMValue = 0; Button_Open_BGM.gameObject.SetActive(true); Slider_NoVoice_BGM.gameObject.SetActive(true); Slider_HaveVoice_BGM.gameObject.SetActive(false); } private void CloseEffect() { _settings.EffectValue = 0; Button_Open_Effect.gameObject.SetActive(true); Slider_NoVoice_Effect.gameObject.SetActive(true); Slider_HaveVoice_Effect.gameObject.SetActive(false); } private void CloseTalk() { _settings.TalkValue = 0; Button_Open_Talk.gameObject.SetActive(true); Slider_NoVoice_Talk.gameObject.SetActive(true); Slider_HaveVoice_Talk.gameObject.SetActive(false); } private void OpenBGM() { 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; _settings.BGMValue = Slider_HaveVoice_BGM.value; } private void OpenEffect() { 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; _settings.EffectValue = Slider_HaveVoice_Effect.value; } private void OpenTalk() { 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; _settings.TalkValue = Slider_HaveVoice_Talk.value; } private void OnValueChangedBGM(float value) { _settings.BGMValue = value; FormatText(Text_Rate_BGM, value); Slider_NoVoice_BGM.value = Slider_HaveVoice_BGM.value; if (value <= 0) CloseBGM(); } private void OnValueChangedEffect(float value) { _settings.EffectValue = value; FormatText(Text_Rate_Effect, value); Slider_NoVoice_Effect.value = Slider_HaveVoice_Effect.value; if (value <= 0) CloseEffect(); } private void OnValueChangedTalk(float value) { _settings.TalkValue = value; FormatText(Text_Rate_Talk, value); Slider_NoVoice_Talk.value = Slider_HaveVoice_Effect.value; if (value <= 0) CloseTalk(); } private void OpenGrid() { _settings.IsOpenGrid = false; Button_Close_Map.gameObject.SetActive(true); } private void CloseGrid() { _settings.IsOpenGrid = true; Button_Close_Map.gameObject.SetActive(false); } private void FormatText(TMP_Text tmpText, float value) { tmpText.text = Mathf.RoundToInt(value * 100).ToString(); } private void Save() { GameSettingManager.Instance.SaveNewSettings(_settings); } private void Cancel() { GameSettingManager.Instance.RevertDefault(); Init(); } }