当我们需要切换一个bool值的时候通常需要用到Toggle开关,Toggle的绘制需要用到GUILayout.Toggle或EditorGUILayout.Toggle方法。
代码语言:javascript复制using UnityEngine;
using UnityEditor;
[CustomEditor(typeof(Test))]
public class TestEditor : Editor
{
private bool boolValue;
public override void OnInspectorGUI()
{
GUILayout.Toggle(boolValue, "开关");
}
}
上述代码表示绘制一个Toggle来表示boolValue的值。
如果需要点击Toggle开关时来切换boolValue的值,需要boolValue接收GUILayout的返回值:
代码语言:javascript复制using UnityEngine;
using UnityEditor;
[CustomEditor(typeof(Test))]
public class TestEditor : Editor
{
private bool boolValue;
public override void OnInspectorGUI()
{
boolValue = GUILayout.Toggle(boolValue, "开关");
}
}
通常我们会使用一个新的bool值来接收返回值,假如值不一样时才进行赋值:
代码语言:javascript复制using UnityEngine;
using UnityEditor;
[CustomEditor(typeof(Test))]
public class TestEditor : Editor
{
private bool boolValue;
public override void OnInspectorGUI()
{
bool newValue = GUILayout.Toggle(boolValue, "开关");
if (newValue != boolValue)
{
boolValue = newValue;
}
}
}
这样可以在赋值之前使用Undo类来记录我们的操作,当我们希望撤销操作时可以使用Ctrl Z来撤销操作,当然Undo类的使用不在此进行介绍。
下面是GUILayout绘制Toggle的所有函数重载:
代码语言:javascript复制public static bool Toggle (bool value, GUIContent content, GUIStyle style, params GUILayoutOption[] options);
public static bool Toggle (bool value, string text, GUIStyle style, params GUILayoutOption[] options);
public static bool Toggle (bool value, Texture image, GUIStyle style, params GUILayoutOption[] options);
public static bool Toggle (bool value, GUIContent content, params GUILayoutOption[] options);
public static bool Toggle (bool value, string text, params GUILayoutOption[] options);
public static bool Toggle (bool value, Texture image, params GUILayoutOption[] options);
下面是EditorGUILayout绘制Toggle的所有函数重载:
代码语言:javascript复制public static bool Toggle (GUIContent label, bool value, GUIStyle style, params GUILayoutOption[] options);
public static bool Toggle (string label, bool value, GUIStyle style, params GUILayoutOption[] options);
public static bool Toggle (bool value, GUIStyle style, params GUILayoutOption[] options);
public static bool Toggle (GUIContent label, bool value, params GUILayoutOption[] options);
public static bool Toggle (string label, bool value, params GUILayoutOption[] options);
public static bool Toggle (bool value, params GUILayoutOption[] options);
public static bool ToggleLeft (GUIContent label, bool value, GUIStyle labelStyle, params GUILayoutOption[] options);
public static bool ToggleLeft (string label, bool value, GUIStyle labelStyle, params GUILayoutOption[] options);
public static bool ToggleLeft (GUIContent label, bool value, params GUILayoutOption[] options);
public static bool ToggleLeft (string label, bool value, params GUILayoutOption[] options);