UEDL3-4——折叠、折叠组
本章代码关键字
1 2 3
| EditorGUILayout.Foldout() EditorGUILayout.BeginFoldoutHeaderGroup() EditorGUILayout.EndFoldoutHeaderGroup()
|
折叠控件
Foldout
折叠控件一般配合其他控件使用,它常用于控制控件的显示隐藏,折叠控件显示隐藏的控制通过改变其对应的bool
值,
进而控制if
语句来决定哪些控件的绘制语句会执行,折叠控件本质是点击改变控件对应的bool
值
该控件同样需要一个bool
变量来表示该控件是否显示,需要将该变量传入到方法内,再由该变量接收本帧用户输入的值
- 参数一:当前是否显示
- 参数二:文本标题(可改为
GUIContent
)
- 参数三:文本标题是否也可以点击(可选,默认
false
)
- 参数四:
GUIStyle
- 返回值:本帧是否继续显示
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
| int i, i1, i2; long l; float f; double d; string s; Vector2 vector2; Vector3 vector3; Vector4 vector4; Rect rect; Bounds bounds; BoundsInt boundsInt;
bool isShow;
private void OnGUI() { isShow = EditorGUILayout.Foldout(isShow, "折叠控件", true); if (isShow) { i = EditorGUILayout.IntField("Int输入框", i); l = EditorGUILayout.LongField("long输入框", l); f = EditorGUILayout.FloatField("Float 输入:", f); d = EditorGUILayout.DoubleField("double 输入:", d);
s = EditorGUILayout.TextField("Text输入:", s); vector2 = EditorGUILayout.Vector2Field("Vec2输入: ", vector2); vector3 = EditorGUILayout.Vector3Field("Vec3输入: ", vector3); vector4 = EditorGUILayout.Vector4Field("Vec4输入: ", vector4); rect = EditorGUILayout.RectField("rect输入: ", rect); bounds = EditorGUILayout.BoundsField("Bounds输入: ", bounds); boundsInt = EditorGUILayout.BoundsIntField("BoundsInt输入: ", boundsInt); } i1 = EditorGUILayout.IntField("Int即时输入框", i1); EditorGUILayout.LabelField(i1.ToString()); i2 = EditorGUILayout.DelayedIntField("Int延迟输入框", i2); EditorGUILayout.LabelField(i2.ToString());
}
|
效果如下
- 折叠时:
- 展开时:
折叠组控件
BeginFoldoutHeaderGroup
的作用和折叠控件差不多,都是控制控件的显示隐藏,
区别是该控件还需要执行一个EndFoldoutHeaderGroup
方法,显示效果和折叠控件也有细微的差别
该控件同样需要一个bool
变量来表示该控件是否显示,需要将该变量传入到方法内,再由该变量接收本帧用户输入的值
- 参数一:当前是否显示
- 参数二:文本标题(可改为
GUIContent
)
- 参数三:
GUIStyle
- 参数四:是否折叠状态变化时会执行的委托
- 参数五:图标的
GUIStyle
- 返回值:本帧是否继续显示
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| int i1, i2; bool isShowGroup;
private void OnGUI() { isShowGroup = EditorGUILayout.BeginFoldoutHeaderGroup(isShowGroup, "折叠组控件"); if (isShowGroup) { i1 = EditorGUILayout.IntField("Int即时输入框", i1); EditorGUILayout.LabelField(i1.ToString()); i2 = EditorGUILayout.DelayedIntField("Int延迟输入框", i2); EditorGUILayout.LabelField(i2.ToString()); } EditorGUILayout.EndFoldoutHeaderGroup(); }
|
效果如下
- 折叠时:
- 展开时: