diff --git a/Packages/UIControl/Runtime/MUSliderHorizontal.cs b/Packages/UIControl/Runtime/MUSliderHorizontal.cs index 5424532..148aaaf 100644 --- a/Packages/UIControl/Runtime/MUSliderHorizontal.cs +++ b/Packages/UIControl/Runtime/MUSliderHorizontal.cs @@ -106,15 +106,21 @@ namespace MuHua { tracker.style.width = CurrentPosition; UpdateFloatField(); } + internal void UpdateFloatField(ChangeEvent evt) { + float value = Mathf.Clamp(evt.newValue, MinValue, MaxValue); + slidingValue = (value - MinValue) / (MaxValue - MinValue); + tracker.style.width = CurrentPosition; + SlidingValueChanged?.Invoke(Value); + } internal void UpdateFloatField(bool value) { isDisplayInput = value; floatField.style.display = isDisplayInput ? DisplayStyle.Flex : DisplayStyle.None; } internal void UpdateFloatField() { - floatField.value = Value; + floatField.SetValueWithoutNotify(Value); } internal float UpdateValue() { - float value = (MaxValue - MinValue) * SlidingValue; + float value = Mathf.Lerp(MinValue, MaxValue, SlidingValue); if (dataType == RoundDataType.保留两位小数) { value = (float)Math.Round(value, 2); } if (dataType == RoundDataType.整数) { value = Mathf.FloorToInt(value); } return Mathf.Clamp(value, MinValue, MaxValue); @@ -165,6 +171,8 @@ namespace MuHua { dragger.RegisterCallback((evt) => isDragger = false); dragger.RegisterCallback((evt) => isDragger = false); + floatField.RegisterCallback>(UpdateFloatField); + container.RegisterCallback(ContainerDown); } private void DraggerDown(PointerDownEvent evt) {