IntSlider回调函数?编辑脚本

时间:2016-09-20 15:48:20

标签: unity3d slider editor

我最近刚进入编辑脚本,我仍然掌握了所有基础知识。我想知道IntSlider(我们用来创建整数值的滑块)是否有任何可用于获取更多功能的方法或函数?

像Slider类一样:
你有-maxValue,-minValue,-value,-onValueChanged(当滑块的值改变时执行回调)

这些工作在" Play"模式。

我需要在编辑器中访问此信息。 具体来说:我需要访问IntSlider的onValueChanged(如果存在),这样我就可以分配一个函数来执行它。

IntSlider代码:

totalRooms = EditorGUILayout.IntSlider(new GUIContent ("Total Rooms"), totalRooms, 0, 10);

有没有办法为检查员实现这个目标?或者可以创建什么来解决这个问题?如果你能指出我正确的方向,我将不胜感激。

enter image description here

我使用的是Unity 5.3.1f

1 个答案:

答案 0 :(得分:3)

目前Unity中没有此类事件。但是,这可以很容易地实现:

在实际脚本中添加UnityEvent

public UnityEvent OnVariablesValueChanged;

然后在编辑器脚本中检查值是否已更改。 (注意:我试图为此编写易于理解的代码示例。您可以相应地更改它)

[CustomEditor(typeof(MyScript))]
public class MyScriptEditor : Editor 
{
    public override void OnInspectorGUI()
    {
        MyScript myTarget = (MyScript)target;
        int prevValue = myTarget.variable;
        myTarget.variable = EditorGUI.IntSlider(new Rect(0,0,100, 20), prevValue, 1, 10);
        int newValue = myTarget.variable;
        if (prevValue != newValue)
        {
            Debug.Log("New value of variable is  :" + myTarget.variable);
            myTarget.OnVariablesValueChanged.Invoke();
        }
        base.OnInspectorGUI();
    }
}

然后从侦查员添加监听器OnVariablesValueChanged事件。

希望这有帮助。