Dozy
1
Hi all,
So I have 7 sliders. There are 6 “stat” sliders and 1 “pool” slider. All the sliders have “integers only” checked.
The 6 stat sliders are interactable and have a min of 0, a max of 10, and a starting value of 0. The pool slider is non-interactable and has a min of 0, a max of 30, and a starting value of 30.
The user gets to distribute the 30 “points” however they choose.
I’m using C#. Any help is appreciated!
I just found “Disable slider dragging at specified value” after posting this but don’t understand the answer.
Dozy
2
Drag code onto each slider. Drag the current slider into slider00 eg. if slider01 is selected, drag slider01 into slider00. (Then I dragged slider02 into slider01, slider03 into slider02 etc.) After that, click ‘+’ of the ‘on value change’ and drag the current slider into the object field. Click the function field. Select the scriptName and under that select ‘tacChange()’ parameter.
public void tacChange()
{
float pointTotal = 6f * 5f;
float sysTotal = slider01.value + slider02.value + slider03.value + slider04.value + slider05.value + slider00.value;
float remain = pointTotal - sysTotal;
if (remain > 0)
{
slider00.value = Mathf.Clamp(slider00.value, 0f, (pointTotal - (slider01.value + slider02.value + slider03.value + slider04.value + slider05.value)) + remain);
slider01.value = Mathf.Clamp(slider01.value, 0f, (pointTotal - (slider02.value + slider03.value + slider04.value + slider05.value + slider00.value)) + remain);
slider02.value = Mathf.Clamp(slider02.value, 0f, (pointTotal - (slider03.value + slider04.value + slider05.value + slider00.value + slider01.value)) + remain);
slider03.value = Mathf.Clamp(slider03.value, 0f, (pointTotal - (slider04.value + slider05.value + slider00.value + slider01.value + slider02.value)) + remain);
slider04.value = Mathf.Clamp(slider04.value, 0f, (pointTotal - (slider05.value + slider00.value + slider01.value + slider02.value + slider03.value)) + remain);
slider05.value = Mathf.Clamp(slider05.value, 0f, (pointTotal - (slider00.value + slider01.value + slider02.value + slider03.value + slider04.value)) + remain);
}
else
{
slider00.value = Mathf.Clamp(slider00.value, 0f, pointTotal - (slider01.value + slider02.value + slider03.value + slider04.value + slider05.value));
slider01.value = Mathf.Clamp(slider01.value, 0f, pointTotal - (slider02.value + slider03.value + slider04.value + slider05.value + slider00.value));
slider02.value = Mathf.Clamp(slider02.value, 0f, pointTotal - (slider03.value + slider04.value + slider05.value + slider00.value + slider01.value));
slider03.value = Mathf.Clamp(slider03.value, 0f, pointTotal - (slider04.value + slider05.value + slider00.value + slider01.value + slider02.value));
slider04.value = Mathf.Clamp(slider04.value, 0f, pointTotal - (slider05.value + slider00.value + slider01.value + slider02.value + slider03.value));
slider05.value = Mathf.Clamp(slider05.value, 0f, pointTotal - (slider00.value + slider01.value + slider02.value + slider03.value + slider04.value));
}
}
There’s probably an easier way but this works for me.