using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UIElements; using MuHua; /// /// SliderInputH - Panel /// public class UISliderInputH : ModuleUIPanel { public float value; public Vector2 range = new Vector2(1, 1); public UISliderH slider; public event Action ValueChanged; public VisualElement Slider => Q("Slider"); public UIFloatField FloatField => Q("UIFloatField"); public UISliderInputH(VisualElement element, VisualElement canvas) : base(element) { slider = new UISliderH(element, canvas); slider.ValueChanged += Slider_ValueChanged; FloatField.RegisterCallback>(FloatField_ValueChanged); } private void Slider_ValueChanged(float obj) { value = Mathf.Lerp(range.x, range.y, obj); FloatField.SetValueWithoutNotify(value); ValueChanged?.Invoke(value); } private void FloatField_ValueChanged(ChangeEvent obj) { value = Mathf.Clamp(obj.newValue, range.x, range.y); float scale = Mathf.InverseLerp(range.x, range.y, value); slider.UpdateValue(scale, false); ValueChanged?.Invoke(value); } public void Update() { slider.Update(); } /// 更新值 public void UpdateValue(float value) { this.value = Mathf.Clamp(range.x, range.y, value); float scale = Mathf.InverseLerp(range.x, range.y, value); slider.UpdateValue(scale, false); FloatField.SetValueWithoutNotify(value); } }