Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unity3d IntSlider回调函数?编辑器脚本_Unity3d_Slider_Editor - Fatal编程技术网

Unity3d IntSlider回调函数?编辑器脚本

Unity3d IntSlider回调函数?编辑器脚本,unity3d,slider,editor,Unity3d,Slider,Editor,我最近刚进入编辑器脚本,我仍然掌握了所有的基础知识。我想知道IntSlider(我们用来创建整数值的滑块)是否有任何方法或函数可用于获得更多功能 类似于Slider类: 您有-maxValue,-minValue,-value,-onValueChanged(当滑块的值更改时执行回调) 这些在“播放”模式下工作 我需要在编辑器中访问此信息特别是:我需要访问IntSlider的onValueChanged(如果存在),以便为其分配执行的函数。 输入滑块代码: totalRooms=EditorGU

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

类似于Slider类:
您有-maxValue,-minValue,-value,-onValueChanged(当滑块的值更改时执行回调)

这些在“播放”模式下工作

我需要在编辑器中访问此信息特别是:我需要访问IntSlider的onValueChanged(如果存在),以便为其分配执行的函数。

输入滑块代码:

totalRooms=EditorGUILayout.IntSlider(新GUIContent(“totalRooms”),totalRooms,0,10)

检查员有没有办法做到这一点?或者可以创造一些东西来解决这个问题?如果你能给我指出正确的方向,我将不胜感激


我使用的是Unity 5.3.1f

目前Unity中没有此类事件。但是,这可以像这样轻松实现:

在实际脚本中添加一个
UnityEvent

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

然后将监听器添加到inspector的
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();
    }
}