@@ -22,6 +22,8 @@ namespace Ichni.Editor
|
||||
public Slider sliderA;
|
||||
public Image colorPreview;
|
||||
|
||||
public HsvDrawer hsvDrawer;
|
||||
|
||||
public override void Initialize(IBaseElement baseElement, string title, string parameterName)
|
||||
{
|
||||
base.Initialize(baseElement, title, parameterName);
|
||||
@@ -30,10 +32,10 @@ namespace Ichni.Editor
|
||||
inputFieldBaseG.text = baseColor.g.ToString();
|
||||
inputFieldBaseB.text = baseColor.b.ToString();
|
||||
inputFieldBaseA.text = baseColor.a.ToString();
|
||||
sliderR.value=baseColor.r;
|
||||
sliderG.value=baseColor.g;
|
||||
sliderB.value=baseColor.b;
|
||||
sliderA.value=baseColor.a;
|
||||
sliderR.value = baseColor.r;
|
||||
sliderG.value = baseColor.g;
|
||||
sliderB.value = baseColor.b;
|
||||
sliderA.value = baseColor.a;
|
||||
sliderR.onValueChanged.AddListener(SliderChange);
|
||||
sliderG.onValueChanged.AddListener(SliderChange);
|
||||
sliderB.onValueChanged.AddListener(SliderChange);
|
||||
@@ -42,8 +44,8 @@ namespace Ichni.Editor
|
||||
inputFieldBaseG.onEndEdit.AddListener(_ => ApplyParameters());
|
||||
inputFieldBaseB.onEndEdit.AddListener(_ => ApplyParameters());
|
||||
inputFieldBaseA.onEndEdit.AddListener(_ => ApplyParameters());
|
||||
|
||||
|
||||
|
||||
|
||||
colorPreview.color = baseColor;
|
||||
}
|
||||
|
||||
@@ -54,15 +56,32 @@ namespace Ichni.Editor
|
||||
connectedBaseElement.GetType().GetField(parameterName).SetValue(connectedBaseElement, newValue);
|
||||
colorPreview.color = newValue;
|
||||
connectedBaseElement.Refresh();
|
||||
// 同步到HSV轮盘
|
||||
if (hsvDrawer != null)
|
||||
{
|
||||
hsvDrawer.SyncFromBaseElement();
|
||||
}
|
||||
}
|
||||
|
||||
public void SliderChange(float value){
|
||||
inputFieldBaseR.text=sliderR.value.ToString();
|
||||
inputFieldBaseG.text=sliderG.value.ToString();
|
||||
inputFieldBaseB.text=sliderB.value.ToString();
|
||||
inputFieldBaseA.text=sliderA.value.ToString();
|
||||
|
||||
public void SliderChange(float value)
|
||||
{
|
||||
inputFieldBaseR.text = sliderR.value.ToString();
|
||||
inputFieldBaseG.text = sliderG.value.ToString();
|
||||
inputFieldBaseB.text = sliderB.value.ToString();
|
||||
inputFieldBaseA.text = sliderA.value.ToString();
|
||||
ApplyParameters();
|
||||
}
|
||||
public void SliderChangeWithoutNofication(Color color)
|
||||
{
|
||||
// 仅更新UI,不触发事件
|
||||
sliderR.SetValueWithoutNotify(color.r);
|
||||
sliderG.SetValueWithoutNotify(color.g);
|
||||
sliderB.SetValueWithoutNotify(color.b);
|
||||
sliderA.SetValueWithoutNotify(color.a);
|
||||
|
||||
// 不调用ApplyParameters以避免重复更新
|
||||
colorPreview.color = new Color(sliderR.value, sliderG.value, sliderB.value, sliderA.value);
|
||||
}
|
||||
|
||||
public override DynamicUIElement AddListenerFunction(UnityAction action)
|
||||
{
|
||||
@@ -75,7 +94,7 @@ namespace Ichni.Editor
|
||||
sliderG.onValueChanged.AddListener(_ => action());
|
||||
sliderB.onValueChanged.AddListener(_ => action());
|
||||
sliderA.onValueChanged.AddListener(_ => action());
|
||||
|
||||
|
||||
return this;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user