IntSlider 回调函数?编辑脚本
IntSlider callback function? Editor Scripting
我最近刚接触编辑器脚本,但我仍在掌握所有基础知识。我想知道 IntSlider(我们用来创建整数值滑块)是否有任何方法或函数可用于获得更多功能?
类似于滑块 class:
您有 -maxValue、-minValue、-value、-onValueChanged(滑块值更改时执行的回调)
这些在 "Play" 模式下工作。
我需要在编辑器中访问此信息。 具体来说:我需要访问 IntSlider 的 onValueChanged(如果它存在),这样我就可以为其分配一个函数来执行。
IntSlider 代码:
totalRooms = EditorGUILayout.IntSlider(new GUIContent ("Total Rooms"), totalRooms, 0, 10);
有没有办法为检查员实现这一目标?或者可以创建什么来解决这个问题?如果您能指出正确的方向,我将不胜感激。
我正在使用 Unity 5.3.1f
目前 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
事件。
希望这对您有所帮助。
我最近刚接触编辑器脚本,但我仍在掌握所有基础知识。我想知道 IntSlider(我们用来创建整数值滑块)是否有任何方法或函数可用于获得更多功能?
类似于滑块 class:
您有 -maxValue、-minValue、-value、-onValueChanged(滑块值更改时执行的回调)
这些在 "Play" 模式下工作。
我需要在编辑器中访问此信息。 具体来说:我需要访问 IntSlider 的 onValueChanged(如果它存在),这样我就可以为其分配一个函数来执行。
IntSlider 代码:
totalRooms = EditorGUILayout.IntSlider(new GUIContent ("Total Rooms"), totalRooms, 0, 10);
有没有办法为检查员实现这一目标?或者可以创建什么来解决这个问题?如果您能指出正确的方向,我将不胜感激。
我正在使用 Unity 5.3.1f
目前 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
事件。
希望这对您有所帮助。