EditorGUILayout:提供了一些Unity内置类或结构体的布局组件,比如为Color类型、Vector3类型等定义的组件,为编辑器在Inspcctor和EditorWindow中的扩展提供了很大的方便;Unity-Manual-EditorGUILayout
- EditorGUILayout与GUILayout不同的是,它提供的是一些为专门的类型而封装的高级控件而不是一些基础组件,所以它的使用通常是用在一些变量的输入;EditorGUILayout是对GUILayout的扩展,它主要用于Inspector和EditorWindow中;
- EditorGUI和EditorGUILayout的区别:EditorGUI是Fixed排列,EditorGUILayout则是Automatic;
EditorGUILayout中的方法分为了两大部分:一部分是各种控件类型,另一部分则是对控件的组织排列;
一、组织控件
通常以Beginxxx()和Endxxx()形式成对出现,其代码包含的控件将被统一组织;
1.Group
将控件以分组形式排列(Group相当于一个Panel),当Group移动时,组内成员也会跟随;
BeginFadeGroup(float val) / EndFadeGroup() / BeginToggleGroup() / EndToggleGroup()
BeginFoldoutHeaderGroup(bool foldout,GUIContent,) / EndFoleoutHeaderGroup()
在EditorGUI中:BeginDisableGroup(bool) /
2.Horizontal / Vertical
管理控件的水平和竖直布局方式
3.ScrollView
管理滚动视图内的控件,BeginScrollView()和EndScrollView()
4.Space()
插入一个空行
二、基本控件
它所提供的控件多以Field为后缀,也侧面反映了它的用处,为属性字段而存在;
1.数值输入控件
- FloatFiled / IntFiled/ Vector2Field / Vector2IntField / Vector3Field / Vector3IntField / Vector4Field / RectField
float sizeMultiplier = EditorGUILayout.FloatField("Increase scale by:", sizeMultiplier);
- 滑动条:FloatSlider() / IntSlider():数值的输入
cloneTimesX = EditorGUILayout.IntSlider(cloneTimesX, 1, 10);
2.文本输入:String变量
TextArea / TextField / PasswordFiled
3.Lable
LabelField():显示只读信息
EditorGUILayout.LabelField("Time since start: ",
EditorApplication.timeSinceStartup.ToString());
4.Toggle:Bool型变量
isFPSOpen = EditorGUILayout.Toggle("Is OpenFPS",isFPSOpen);
6.PropertyFiled()
用于自定义属性面板中,定义各个字段的布局;使用该函数就会根据属性来使用unity自动的布局;
EditorGUILayout.PropertyField(m_GameObjectProp, new GUIContent("Game Object"));
7.ObjectField()
支持unity提供的各种类型的对象
source = EditorGUILayout.ObjectField(source, typeof(Object), true)
8.一些类类型:Color、Curve等
ColorFiled / CurveFileld / TagFiled
9.其它常用类型
PasswordFiled /