UEDL3-5——开关、开关组

本章代码关键字

1
2
3
4
EditorGUILayout.Toggle()                //开关控件,会绘制一个类似于多选框的控件,用于表示开关,需要配套bool变量
EditorGUILayout.ToggleLeft() //勾选项在左的开关控件,需要配套bool变量
EditorGUILayout.BeginToggleGroup() //开关组控件,它可以控制多个控件的是否激活,需要配套bool变量
EditorGUILayout.EndToggleGroup() //和开关组控件配套使用,与上一句一起将需要控制是否激活的控件包裹起来

开关控件

Toggle​会绘制一个类似于其他GUI的多选框Toggle​的控件,
它需要一个对应的bool​变量来表示是否开启,需要将该变量传入到方法内,再由该变量接收本帧用户输入的值

  • 参数一:文本标题(可选,可改为GUIContent​)
  • 参数二:当前是否开启
  • 参数三:GUIStyle
  • 参数四:GUILayoutOption​(使用EditorGUI​绘制时可选)
  • 返回值:本帧是否继续开启
1
2
3
4
5
6
bool isTog;

private void OnGUI()
{
isTog = EditorGUILayout.Toggle("开关控件", isTog);
}

显示效果如下:​image

它还有一种勾选项在左的变种,参数与使用方法与上个方法大同小异

1
2
3
4
5
6
7
8
bool isTog;
bool isTogLeft;

private void OnGUI()
{
isTog = EditorGUILayout.Toggle("开关控件", isTog);
isTogLeft = EditorGUILayout.ToggleLeft("开关在左", isTogLeft);
}

显示效果如下:image

开关组

它由两个方法BeginToggleGroup​和EndToggleGroup​组成,它可以控制包裹在两个方法之间的控件是否被激活,或者说是否可以被点击使用,
如果为false​,则控件虽然会绘制,但是无法点击,相当于控件失活
它需要一个对应的bool​变量来表示是否开启,需要将该变量传入到方法内,再由该变量接收本帧用户输入的值

  • 参数一:文本标题(可改为GUIContent​)
  • 参数二:当前是否开启让被包裹的控件可用
  • 返回值:本帧是否继续让被包裹的控件可用
1
2
3
4
5
6
7
8
9
10
11
12
bool isTog;
bool isTogLeft;

bool isTogGroup;

private void OnGUI()
{
isTogGroup = EditorGUILayout.BeginToggleGroup("开关组控件", isTogGroup);
isTog = EditorGUILayout.Toggle("开关控件", isTog);
isTogLeft = EditorGUILayout.ToggleLeft("开关在左", isTogLeft);
EditorGUILayout.EndToggleGroup();
}

显示效果如下(关闭状态):image