修复Slider
This commit is contained in:
@@ -34,17 +34,19 @@ namespace Ichni.Editor
|
||||
if (minInputField != null) minInputField.interactable = true;
|
||||
if (maxInputField != null) maxInputField.interactable = true;
|
||||
|
||||
slider.minValue = min;
|
||||
slider.maxValue = max;
|
||||
slider.wholeNumbers = wholeNumbers;
|
||||
|
||||
// [对象池安全] 精准解绑业务代理
|
||||
// [对象池安全] 精准解绑业务代理 — 必须在修改 slider range 之前完成,
|
||||
// 否则 Unity Slider 在 maxValue < 旧 value 时会自动触发 onValueChanged,
|
||||
// 导致旧监听器用旧的 parameterName 将错误值写回对象。
|
||||
slider.onValueChanged.RemoveListener(OnSliderValueChanged);
|
||||
valueInputField?.onEndEdit.RemoveListener(OnValueInputEndEdit);
|
||||
minInputField?.onEndEdit.RemoveListener(OnMinInputEndEdit);
|
||||
maxInputField?.onEndEdit.RemoveListener(OnMaxInputEndEdit);
|
||||
customAction = null;
|
||||
|
||||
slider.minValue = min;
|
||||
slider.maxValue = max;
|
||||
slider.wholeNumbers = wholeNumbers;
|
||||
|
||||
base.Initialize(baseElement, title, parameterName);
|
||||
|
||||
if (parameterName != string.Empty)
|
||||
@@ -58,13 +60,13 @@ namespace Ichni.Editor
|
||||
{
|
||||
Debug.LogWarning($"[DynamicUI] 尝试绑定 {title} ({parameterName}) 失败,由于其值或路径无效。");
|
||||
}
|
||||
slider.onValueChanged.AddListener(OnSliderValueChanged);
|
||||
}
|
||||
else
|
||||
{
|
||||
slider.onValueChanged.AddListener(OnSliderValueChanged);
|
||||
}
|
||||
|
||||
slider.onValueChanged.AddListener(OnSliderValueChanged);
|
||||
valueInputField?.onEndEdit.AddListener(OnValueInputEndEdit);
|
||||
minInputField?.onEndEdit.AddListener(OnMinInputEndEdit);
|
||||
maxInputField?.onEndEdit.AddListener(OnMaxInputEndEdit);
|
||||
|
||||
SyncAllInputFields();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user