UI相关优化补充
This commit is contained in:
@@ -26,6 +26,12 @@ namespace BaseGames.UI
|
||||
[SerializeField] private Toggle _vSyncToggle;
|
||||
[SerializeField] private TMP_Dropdown _fpsDropdown; // 30 / 60 / 120 / 无限
|
||||
|
||||
[Header("可访问性")]
|
||||
[SerializeField] private Slider _uiScaleSlider; // 0.8 ~ 1.5
|
||||
[SerializeField] private TMP_Text _uiScaleValueText; // 实时显示 "100%"
|
||||
[SerializeField] private TMP_Dropdown _colorblindDropdown; // None / Prot / Deut / Trit
|
||||
[SerializeField] private Toggle _screenShakeToggle;
|
||||
|
||||
[Header("按键重绑定")]
|
||||
[SerializeField] private GameObject _rebindPanelRoot; // RebindPanel GameObject
|
||||
|
||||
@@ -59,10 +65,46 @@ namespace BaseGames.UI
|
||||
_settings.SetTargetFrameRate(FpsOptions[Mathf.Clamp(i, 0, FpsOptions.Length - 1)]));
|
||||
}
|
||||
|
||||
// ── 可访问性 ──────────────────────────────────────────────────────
|
||||
if (_uiScaleSlider != null)
|
||||
{
|
||||
_uiScaleSlider.onValueChanged.RemoveAllListeners();
|
||||
_uiScaleSlider.minValue = 0.8f;
|
||||
_uiScaleSlider.maxValue = 1.5f;
|
||||
_uiScaleSlider.value = Mathf.Clamp(data.UIScale, _uiScaleSlider.minValue, _uiScaleSlider.maxValue);
|
||||
UpdateUIScaleLabel(_uiScaleSlider.value);
|
||||
_uiScaleSlider.onValueChanged.AddListener(v =>
|
||||
{
|
||||
_settings.SetUIScale(v);
|
||||
UpdateUIScaleLabel(v);
|
||||
});
|
||||
}
|
||||
|
||||
if (_colorblindDropdown != null)
|
||||
{
|
||||
_colorblindDropdown.onValueChanged.RemoveAllListeners();
|
||||
_colorblindDropdown.value = (int)data.ColorblindMode;
|
||||
_colorblindDropdown.onValueChanged.AddListener(i =>
|
||||
_settings.SetColorblindMode((ColorblindMode)Mathf.Clamp(i, 0, 3)));
|
||||
}
|
||||
|
||||
if (_screenShakeToggle != null)
|
||||
{
|
||||
_screenShakeToggle.onValueChanged.RemoveAllListeners();
|
||||
_screenShakeToggle.isOn = data.ScreenShakeEnabled;
|
||||
_screenShakeToggle.onValueChanged.AddListener(v => _settings.SetScreenShakeEnabled(v));
|
||||
}
|
||||
|
||||
// 手柄导航:打开设置面板时将焦点置于主音量滑条
|
||||
EventSystem.current?.SetSelectedGameObject(_masterVolume?.gameObject);
|
||||
}
|
||||
|
||||
private void UpdateUIScaleLabel(float v)
|
||||
{
|
||||
if (_uiScaleValueText != null)
|
||||
_uiScaleValueText.text = Mathf.RoundToInt(v * 100f) + "%";
|
||||
}
|
||||
|
||||
// ── 辅助 ──────────────────────────────────────────────────────────────
|
||||
|
||||
private static void InitSlider(Slider slider, float value, UnityEngine.Events.UnityAction<float> onChange)
|
||||
|
||||
Reference in New Issue
Block a user