Sliders Share from a Pool

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.

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.