249 lines
7.8 KiB
C#
249 lines
7.8 KiB
C#
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;
|
||
}
|
||
} |