【unity】Slider联动

一.应用背景

最近在公司BigWorld模块开发过程中,需要扩展编辑器,以实现距离相机不同距离显示不同草的功能。这些距离可以通过编辑器面板的EditorGUILayout.Slider来控制,且需要有联动效果,即后一slider的值不小于前一slider的值,拖动slider时会相互影响。

二.设计思路

问题的关键点在于前一slider的值不小于后一slider的值,也就是各slider的值呈递增趋势。因此可以先用一个列表存储拖动某一slider后,各slider的值,然后对该列表按升序排序后,再按序赋给对应slider影响的对象即可。

三.核心源码

using System.Collections.Generic;
using UnityEditor;
public class SliderWindow : EditorWindow
{
    [MenuItem("Test/OpenWindow")]
    static void Open()
    {
        EditorWindow.GetWindow("Slider联动");
    }
    private float[] values = new float[5];
    private List tempList = new List();
    private void OnGUI()
    {
        tempList.Clear();
        for (var index = 0; index < values.Length; index++)
        {
            var value = EditorGUILayout.Slider($"slider{index}", values[index], 0, 1);
            tempList.Add(value);
        }
        tempList.Sort();
        for (var index = 0; index < values.Length; index++)
        {
            values[index] = tempList[index];
        }
    }
}

四.联动效果

【unity】Slider联动_第1张图片

 

你可能感兴趣的:(【unity】Slider联动)