using RR.Common.Settings; using TMPro; using UnityEngine; using UnityEngine.UI; namespace RR.Common.UI { public class SettingSliderBinder : MonoBehaviour { [SerializeField] private string key; [SerializeField] private Slider slider; [SerializeField] private TMP_Text label; [SerializeField] private TMP_Text valueText; // optional private SettingEntry def; private void Start() { def = SettingsManager.Instance.Define(key); if (def == null) { gameObject.SetActive(false); return; } if (label) label.text = def.displayName; slider.minValue = def.minFloat; slider.maxValue = def.maxFloat; float v = SettingsManager.Instance.Get(key).f; slider.SetValueWithoutNotify(v); UpdateValueText(v); slider.onValueChanged.AddListener(val => { SettingsManager.Instance.Set(key, SettingValue.Float(val)); UpdateValueText(val); }); } private void UpdateValueText(float v) { if (valueText) valueText.text = v.ToString("0.##"); } } }