目录
1. 前言
- EditorGUILayout专门用于编辑器界面的GUI类,提供了Unity内置类或结构体的控件函数,比如Color类、Vector3类等定义的控件。
- 为编辑器在Inspector和EditorWindow中扩展提供了很大的方便。
2. 参数
静态函数描述BeginBuildTargetSelectionGrouping开始构建目标组并返回所选 BuildTargetGroup。BeginFadeGroup开始一个可隐藏/显示的组,并且过渡将生成动画。BeginFoldoutHeaderGroup创建一个左侧带有折叠箭头的标签。BeginHorizontal开始一个水平组并找回其矩形。BeginScrollView开始一个自动布局的滚动视图。BeginToggleGroup开始一个垂直组,带有可一次性启用或禁用所有控件的开关。BeginVertical开始一个垂直组并找回其矩形。BoundsField创建用于输入 Bounds 的 Center 和 Extents 字段。BoundsIntField创建用于输入 BoundsInt 的 Position 和 Size 字段。ColorField创建一个用于选择 Color 的字段。CurveField创建一个用于编辑 AnimationCurve 的字段。DelayedDoubleField创建一个用于输入双精度浮点数的延迟文本字段。DelayedFloatField创建一个用于输入浮点数的延迟文本字段。DelayedIntField创建一个用于输入整数的延迟文本字段。DelayedTextField创建一个延迟文本字段。DoubleField生成一个用于输入双精度值的文本字段。DropdownButton创建一个能够对鼠标按下做出反应的按钮,用于显示您自己的下拉菜单内容。EditorToolbar创建一个用指定的编辑器工具集合填充的工具栏。EditorToolbarForTarget创建一个工具栏,该工具栏用与目标对象的 EditorToolAttribute 匹配的编辑器工具集合来填充。EndBuildTargetSelectionGrouping关闭以 BeginBuildTargetSelectionGrouping 开头的组。EndFadeGroup关闭由 BeginFadeGroup 开始的组。EndFoldoutHeaderGroup关闭以 BeginFoldoutHeaderGroup 开头的组。EndHorizontal闭合以 BeginHorizontal 开始的组。EndScrollView结束使用 BeginScrollView 调用开始的滚动视图。EndToggleGroup关闭由 BeginToggleGroup 开始的组。EndVertical闭合以 BeginVertical 开始的组。EnumFlagsField单击后,系统会为枚举类型的每个值显示带有选项的菜单。EnumPopup创建一个枚举弹出选择字段。FloatField生成一个用于输入浮点值的文本字段。Foldout创建一个左侧带有折叠箭头的标签。GetControlRect获取编辑器控件的矩形。GradientField创建一个用于编辑 Gradient 的字段。HelpBox创建一个带有发送给用户的消息的帮助框。InspectorTitlebar创建一个类似于 Inspector 窗口的标题栏。IntField创建一个用于输入整数的文本字段。IntPopup创建一个整数弹出选择字段。IntSlider创建一个滑动条,用户可以进行拖动以在最小值和最大值之间更改整数值。LabelField生成一个标签字段。(用于显示只读信息。)LayerField创建一个层选择字段。LinkButtonMake a clickable link label.LongField创建一个用于输入长整数的文本字段。MaskField创建一个适用于掩码的字段。MinMaxSlider创建一个特殊滑动条,用户可利用该滑动条指定最小值和最大值之间的一个范围。ObjectField生成一个可接收任何对象类型的字段。PasswordField创建一个可让用户输入密码的文本字段。Popup创建一个通用弹出选择字段。PrefixLabel创建一个显示在特定控件前的标签。PropertyField为 SerializedProperty 生成一个字段。RectField创建用于输入 Rect 的 X、Y、W 和 H 字段。RectIntField创建用于输入 RectInt 的 X、Y、W 和 H 字段。SelectableLabel生成一个可选择标签字段。(用于显示可复制粘贴的只读信息。)Slider创建一个滑动条,用户可以进行拖动以在最小值和最大值之间更改值。Space在上一个控件和下一个控件之间留出一个小空间。TagField创建一个标签选择字段。TextArea创建一个文本区域。TextField创建一个文本字段。Toggle创建一个开关。ToggleLeft创建一个开关字段,其中开关位于左侧,标签紧随其右。ToolContextToolbar使用指定的编辑器工具上下文集合填充工具栏。ToolContextToolbarForTarget使用与目标对象的 EditorToolContextAttribute.targetType 匹配的 EditorToolContextVector2Field创建用于输入 Vector2 的 X 和 Y 字段。Vector2IntField创建用于输入 Vector2Int 的 X 和 Y 整数字段。Vector3Field创建用于输入 Vector3 的 X、Y 和 Z 字段。Vector3IntField创建用于输入 Vector3Int 的 X、Y 和 Z 整数字段。Vector4Field创建用于输入 Vector4 的 X、Y、Z 和 W 字段。
3. 功能
3.1 折叠菜单: Foldout
- Foldout:创建一个左侧带有折叠箭头的标签。bool 用户选择的折叠状态。如果为 true,则应渲染子对象。这适用于创建树或文件夹之类的结构,其中子对象仅在父项展开时显示。
usingUnityEditor;usingUnityEngine;publicclassEditorGUIExample:EditorWindow{publicbool showPosition =true;publicstring status ="Select a GameObject";[MenuItem("Examples/Foldout Usage")]staticvoidInit(){UnityEditor.EditorWindow window =GetWindow(typeof(EditorGUIExample));
window.position =newRect(0,0,150,60);
window.Show();}voidOnGUI(){
showPosition = EditorGUILayout.Foldout(showPosition, status);if(showPosition)if(Selection.activeTransform){
Selection.activeTransform.position = EditorGUI.Vector3Field(newRect(3,25, position.width -6,40),"Position", Selection.activeTransform.position);
status = Selection.activeTransform.name;}if(!Selection.activeTransform){
status ="Select a GameObject";
showPosition =false;}}voidOnInspectorUpdate(){Repaint();}}
3.2 折叠组: FoldoutGroup
- 创建一个左侧带有折叠箭头的标签。
- 这适用于文件夹之类的结构,其中子对象仅在展开父项时显示。此控件不能嵌套在其他 BeginFoldoutHeaderGroup 中。要使用多个折叠,每个方法都必须以 EndFoldoutHeaderGroup 结尾。
usingUnityEditor;usingUnityEngine;publicclassEditorGUIExample:EditorWindow{privatebool foldOut;[MenuItem("Window/BeginFoldoutHeaderGroup")]staticvoidInit(){var example =(EditorGUIExample)EditorWindow.GetWindow(typeof(EditorGUIExample));
example.Show();}voidOnGUI(){
foldOut = EditorGUILayout.BeginFoldoutHeaderGroup(foldOut,"折叠栏组");if(foldOut)//只有foldout为true时,才会显示下方内容,相当于“折叠”了。{
EditorGUILayout.LabelField("这是折叠标签内容");}
EditorGUILayout.EndFoldoutHeaderGroup();//只不过这种折叠需要成对使用,不然会有BUG}}
3.4 下拉菜单:DropdownButton
- DropdownButton :创建一个能够对鼠标按下做出反应的按钮,用于显示您自己的下拉菜单内容。
usingUnityEditor;usingUnityEngine;publicclassEditorGUIExample:EditorWindow{[MenuItem("Tool/TestOnGUI")]privatestaticvoidOpenGUIExample(){GetWindow<EditorGUIExample>().Show();}bool _foldoutValue;publicvoidOnGUI(){
_foldoutValue = EditorGUI.Foldout(newRect(0,0,20,20), _foldoutValue,"折叠");if(_foldoutValue){if(EditorGUI.DropdownButton(newRect(0,20,200,40),newGUIContent("下拉菜单"), FocusType.Keyboard)){GenericMenu genericMenu =newGenericMenu();
genericMenu.AddItem(newGUIContent("One"),false,()=>{ Debug.Log("回调函数");});
genericMenu.AddSeparator(string.Empty);//分割线
genericMenu.AddItem(newGUIContent("Two"),false,()=>{});
genericMenu.AddItem(newGUIContent("There"),false,()=>{});
genericMenu.DropDown(newRect(0,20,20,20));}}}}
3.5 超链接:LinkButton
- LinkButton :超链接按钮。
usingUnityEditor;usingUnityEngine;publicclassEditorGUIExample:EditorWindow{[MenuItem("Tool/TestOnGUI")]privatestaticvoidOpenGUIExample(){GetWindow<EditorGUIExample>().Show();}publicvoidOnGUI(){if(EditorGUILayout.LinkButton("超链接")){
Application.OpenURL("www.baidu.com");}}}
3.6 颜色字段:ColorField
- ColorField :创建一个用于选择 Color 的字段。
usingUnityEditor;usingUnityEngine;publicclassEditorGUIExample:EditorWindow{[MenuItem("Tool/TestOnGUI")]privatestaticvoidOpenGUIExample(){GetWindow<EditorGUIExample>().Show();}Color _colorFiled;publicvoidOnGUI(){
_colorFiled = EditorGUILayout.ColorField(_colorFiled);}}
3.7 边界盒字段:BoundsField 、BoundsIntField
- BoundsField :创建用于输入 Bounds 的 Center 和 Extents 字段。
- BoundsIntField :创建用于输入 BoundsInt 的 Position 和 Size 字段。
usingUnityEditor;usingUnityEngine;publicclassEditorGUIExample:EditorWindow{[MenuItem("Tool/TestOnGUI")]privatestaticvoidOpenGUIExample(){GetWindow<EditorGUIExample>().Show();}Bounds _boundsFiledValue;BoundsInt _boundsIntFiledValue;publicvoidOnGUI(){
_boundsFiledValue = EditorGUILayout.BoundsField(_boundsFiledValue);
_boundsIntFiledValue = EditorGUILayout.BoundsIntField(_boundsIntFiledValue);}}
3.8 动画曲线面板:CurveField
- CurveField :生成一个用于编辑 AnimationCurve 的字段。
usingUnityEditor;usingUnityEngine;publicclassEditorGUIExample:EditorWindow{[MenuItem("Tool/TestOnGUI")]privatestaticvoidOpenGUIExample(){GetWindow<EditorGUIExample>().Show();}privateAnimationCurve _animationCurveValue =newAnimationCurve();publicvoidOnGUI(){
_animationCurveValue = EditorGUILayout.CurveField(_animationCurveValue);}}
3.9 渐变:GradientField
- GradientField :创建一个用于编辑 Gradient 的字段。
usingUnityEditor;usingUnityEngine;publicclassEditorGUIExample:EditorWindow{Gradient gradient =newGradient();[MenuItem("Examples/Gradient Field demo")]staticvoidInit(){EditorWindow window =GetWindow(typeof(EditorGUIExample));
window.position =newRect(0,0,400,199);
window.Show();}voidOnGUI(){
gradient = EditorGUILayout.GradientField("Gradient", gradient);}}
3.10 对象选择器:ObjectField
- ObjectField :创建一个对象字段。您可以通过拖放对象或使用对象选择器选择对象来分配对象。当对象引用作为资源的一部分进行存储时,请确保 allowSceneObjects 参数为 false,因为资源无法存储对场景中对象的引用。如果 ObjectField 是脚本组件的自定义编辑器的一部分,请使用 EditorUtility.IsPersistent() 检查该组件是位于资源还是场景对象中。
usingUnityEditor;usingUnityEngine;publicclassEditorGUIExample:EditorWindow{[MenuItem("Tool/ObjectField")]privatestaticvoidOpenGUIExample(){GetWindow<EditorGUIExample>().Show();}privateSprite _objectFieldValue;publicvoidOnGUI(){
_objectFieldValue =(Sprite)EditorGUILayout.ObjectField(_objectFieldValue,typeof(Sprite),true);}}
3.11 双精度浮点数字段:DoubleField、DelayedDoubleField
- DoubleField :生成一个用于输入双精度浮点数的文本字段。
- DelayedDoubleField :创建一个用于输入双精度浮点数的延迟文本字段。与DoubleField 类似,但在用户按 Enter 键或将焦点从双精度浮点数字段移开之前,不会返回新值。
usingUnityEditor;usingUnityEngine;publicclassEditorGUIExample:EditorWindow{double value1 =0F;double value2 =0F;[MenuItem("Tool/DoubleField")]privatestaticvoidOpenGUIExample(){GetWindow<EditorGUIExample>().Show();}publicvoidOnGUI(){
value1 = EditorGUILayout.DoubleField(value1);
value2 = EditorGUILayout.DelayedDoubleField(value2);}}
3.12 多维字段:RectField、RectIntField、Vector2Field、Vector2IntField、Vector3Field、Vector3IntField、Vector4Field
- RectField :创建用于输入 Rect 的 X、Y、W 和 H 字段。
- RectIntField :创建用于输入 RectInt 的 X、Y、W 和 H 字段。
- Vector2Field :创建用于输入 Vector2 的 X 和 Y 字段。
- Vector2IntField :创建用于输入 Vector2Int 的 X 和 Y 整数字段。
- Vector3Field :创建用于输入 Vector3 的 X、Y 和 Z 字段。
- Vector3IntField :创建用于输入 Vector3Int 的 X、Y 和 Z 整数字段。
- Vector4Field :创建用于输入 Vector4 的 X、Y、Z 和 W 字段。
RectField:
usingUnityEditor;usingUnityEngine;publicclassEditorGUIExample:EditorWindow{Camera[] cameras;[MenuItem("Tool/DoubleField")]privatestaticvoidOpenGUIExample(){GetWindow<EditorGUIExample>().Show();}voidOnGUI(){if(GUI.Button(newRect(3,3, position.width -6,20),"Update list"))
cameras =FindObjectsOfType<Camera>();if(cameras.Length >0){for(var i =0; i < cameras.Length; i++){
cameras[i].rect = EditorGUILayout.RectField(
cameras[i].name,
cameras[i].rect);}}}}
usingUnityEditor;usingUnityEngine;publicclassEditorGUIExample:EditorWindow{Vector2 v2;Vector2Int v2Int;Vector3 v3;Vector3Int v3Int;Vector4 v4Int;[MenuItem("Tool/DoubleField")]privatestaticvoidOpenGUIExample(){GetWindow<EditorGUIExample>().Show();}voidOnGUI(){
v2 = EditorGUILayout.Vector2Field("Vector2Field", v2);
v2Int = EditorGUILayout.Vector2IntField("Vector2IntField", v2Int);
v3 = EditorGUILayout.Vector2Field("Vector3Field", v3);
v3Int = EditorGUILayout.Vector3IntField("Vector3IntField", v3Int);
v4Int = EditorGUILayout.Vector4Field("Vector4Field", v4Int);}}
3.13 切换框:Toggle、ToggleLeft
- Toggle :创建一个开关。
- ToggleLeft :创建一个开关字段,其中开关位于左侧,标签紧随其右。
usingUnityEditor;usingUnityEngine;publicclassEditorGUIExample:EditorWindow{bool showClose =true;[MenuItem("Tool/Toggle")]privatestaticvoidOpenGUIExample(){GetWindow<EditorGUIExample>().Show();}voidOnGUI(){
showClose = EditorGUILayout.Toggle("Show Close Button", showClose);
showClose = EditorGUILayout.ToggleLeft("Show Close Button", showClose);}}
3.14 选择标签:TagField、LayerField
- TagField :创建一个标签选择字段。
- LayerField :创建一个层选择字段。
usingUnityEditor;usingUnityEngine;publicclassEditorGUIExample:EditorWindow{string selectedTag ="";int selectedLayer =0;[MenuItem("Examples/Field")]staticvoidInit(){EditorWindow window =GetWindow<EditorGUIExample>();
window.position =newRect(0,0,350,70);
window.Show();}voidOnGUI(){
selectedTag = EditorGUILayout.TagField("TagField:", selectedTag);
selectedLayer = EditorGUILayout.LayerField("LayerField:", selectedLayer);}voidOnInspectorUpdate(){Repaint();}}
3.15 滑动条:Slider、MinMaxSlider
- Slider :创建一个滑动条,用户可以进行拖动以在最小值和最大值之间更改值。
- MinMaxSlider :创建一个特殊滑动条,用户可利用该滑动条指定最小值和最大值之间的一个范围。
usingUnityEditor;usingUnityEngine;publicclassEditorGUIExample:EditorWindow{float scale =1.0f;float minVal =-10;float minLimit =-20;float maxVal =10;float maxLimit =20;[MenuItem("Examples/Slider")]staticvoidInit(){EditorWindow window =GetWindow<EditorGUIExample>();
window.position =newRect(0,0,350,70);
window.Show();}voidOnGUI(){
scale = EditorGUILayout.Slider(scale,1,100);
EditorGUILayout.MinMaxSlider(newGUIContent("Random range:"),ref minVal,ref maxVal,
minLimit, maxLimit);}}
3.16 间隔:Space
- Space :在上一个控件和下一个控件之间留出一个小空间。
EditorGUILayout.LabelField("----上面的Label----");
EditorGUILayout.Space(10);//进行10个单位的间隔
EditorGUILayout.LabelField("----下面的Label----");
3.17 帮助框:HelpBox
- HelpBox :创建一个带有发送给用户的消息的帮助框。
EditorGUILayout.HelpBox("一般提示,你应该这样做...", MessageType.Info);
EditorGUILayout.HelpBox("警告提示,你可能需要这样做...", MessageType.Warning);
EditorGUILayout.HelpBox("错误提示,你不能这样做...", MessageType.Error);
3.18 Inspector标题栏:InspectorTitlebar
- InspectorTitlebar :创建一个类似于 Inspector 窗口的标题栏。
usingUnityEditor;usingUnityEngine;publicclassEditorGUIExample:EditorWindow{bool showing =true;[MenuItem("Examples/InspectorTitlebar")]staticvoidInit(){EditorWindow window =GetWindow<EditorGUIExample>();
window.position =newRect(0,0,350,70);
window.Show();}voidOnGUI(){var currObj = Selection.activeTransform;
showing = EditorGUILayout.InspectorTitlebar(showing, currObj, showing);}}
3.19 文本:FloatField、IntField、LabelField、LongField、MultiFloatField、MultiIntField、MultiPropertyField、TextArea、TextField、PasswordField
- FloatField :创建一个用于输入浮点数的文本字段。
- IntField :创建一个用于输入整数的文本字段。
- LabelField :创建一个标签字段。(用于显示只读信息。)
- LongField :创建一个用于输入长整数的文本字段。
- MultiFloatField :创建一个带有文本字段的多控件,用于在同一行中输入多个浮点值。
- MultiIntField :创建一个带有文本字段的多控件,用于在同一行中输入多个整数。
- MultiPropertyField :创建一个在同一行中包含多个属性字段的多控件。
- TextArea :创建一个文本区域。
- TextField :创建一个文本字段。
- PasswordField :创建一个可让用户输入密码的文本字段。
usingUnityEditor;usingUnityEngine;publicclassEditorGUIExample:EditorWindow{float FloatField =0;int IntField =0;long LongField =0;float[] numbers =newfloat[]{0,1,2};GUIContent[] contents =newGUIContent[]{newGUIContent("X"),newGUIContent("Y"),newGUIContent("Z")};string note ="Notes:";string PasswordField ="";string objNames ="";[MenuItem("Examples/Slider")]staticvoidInit(){EditorWindow window =GetWindow<EditorGUIExample>();
window.position =newRect(0,0,350,70);
window.Show();}voidOnGUI(){
FloatField = EditorGUILayout.FloatField("FloatField:", FloatField);
IntField = EditorGUILayout.IntField("IntField:", IntField);
LongField = EditorGUILayout.LongField("LongField:", LongField);
EditorGUILayout.LabelField("LabelField", EditorApplication.timeSinceStartup.ToString());
note = EditorGUILayout.TextArea( note);
objNames = EditorGUILayout.TextField("TextField:",
objNames);
PasswordField = EditorGUILayout.PasswordField(PasswordField);}}
3.20 通用弹出选择字段:Popup
- Popup :创建一个通用弹出选择字段,以参数形式获取当前所选的索引,并返回用户选择的索引。
usingUnityEditor;usingUnityEngine;publicclassEditorGUIExample:EditorWindow{string[] options ={"Rigidbody","Box Collider","Sphere Collider"};int index =0;[MenuItem("Examples/ProgressBar")]staticvoidInit(){EditorWindow window =GetWindow<EditorGUIExample>();
window.position =newRect(0,0,350,70);
window.Show();}voidOnGUI(){
index = EditorGUI.Popup(newRect(0,0, position.width,20),"Component:",
index,
options);}}
3.21 单选枚举:EnumPopup
- EnumPopup :创建一个枚举弹出选择字段。
usingUnityEditor;usingUnityEngine;publicclassEditorGUIExample:EditorWindow{OPTIONS display = OPTIONS.Position;publicenumOPTIONS{
Position =0,
Rotation =1,
Scale =2,}[MenuItem("Examples/ProgressBar")]staticvoidInit(){EditorWindow window =GetWindow<EditorGUIExample>();
window.position =newRect(0,0,350,70);
window.Show();}voidOnGUI(){
display =(OPTIONS)EditorGUILayout.EnumPopup("Show:",
display);}}
3.22 多选枚举:EnumFlagsField
- EnumFlagsField :单击时显示一个菜单,其中包含针对枚举类型的每个值的选项。名称为“Nothing”的值 0 选项和名称为“Everything”的值 ~0(即所有位设置)选项始终显示在菜单顶部。值 0 和 ~0 的名称可以通过在枚举类型中定义这些值来覆盖。
usingUnityEditor;usingUnityEngine;publicclassEditorGUIExample:EditorWindow{enumExampleFlagsEnum{
None =0,
A =1<<0,
B =1<<1,
AB = A | B,
C =1<<2,
All =~0,}ExampleFlagsEnum m_Flags;[MenuItem("Examples/EnumFlagsField Example")]staticvoidOpenWindow(){GetWindow<EditorGUIExample>().Show();}voidOnGUI(){
m_Flags =(ExampleFlagsEnum)EditorGUILayout.EnumFlagsField(m_Flags);}}
3.23 单选/多选整型:IntPopup、MaskField
- IntPopup :创建一个整数弹出选择字段。
- MaskField :创建一个适用于掩码的字段。
usingUnityEditor;usingUnityEngine;publicclassEditorGUIExample:EditorWindow{int flags =0;string[] options ={"CanJump","CanShoot","CanSwim"};int selectedSize =1;string[] names ={"Double","Triple","Quadruple"};int[] sizes ={2,3,4};[MenuItem("Examples/Mask Field Usage")]staticvoidInit(){var window =GetWindow<EditorGUIExample>();
window.Show();}voidOnGUI(){
flags = EditorGUILayout.MaskField("Player Flags", flags, options);
selectedSize = EditorGUILayout.IntPopup("Size:",
selectedSize,
names,
sizes);}}
3.24 工具栏:EditorToolbar
- EditorToolbar :创建一个用指定的编辑器工具集合填充的工具栏。
EditorGUILayout.EditorToolbar();
3.25 GUILayout派生控件
privateVector2 scrollRoot;...
EditorGUILayout.BeginHorizontal();//开始水平布局//一大堆控件...
EditorGUILayout.EndHorizontal();//结束水平布局
EditorGUILayout.BeginVertical();//开始垂直布局//一大堆控件...
EditorGUILayout.EndVertical();//结束垂直布局
scrollRoot = EditorGUILayout.BeginScrollView(scrollRoot);//开启滚动视图//一大堆控件...
EditorGUILayout.EndScrollView();//结束滚动视图
4 完整演示版
usingUnityEditor;usingUnityEngine;publicclassEditorGUIExample:EditorWindow{string PasswordField ="";string m_textArea ="";float sliders =0;int slidera =0;string BeginToggleGroup ="BeginToggleGroup";bool ToggleGroup =false;string Textfield ="";bool fg =false;float sum =0;int count =0;string tag ="aaa";int Layerfield =0;string[] pathname =newstring[]{"All","Asset","..."};float minVal =1;float maxVal =2;float minLimit =-5;float maxLimit =5;staticVector3 center =newVector3(1,2,3);staticVector3 size1 =newVector3(1,2,3);Bounds _bounds =newBounds(center, size1);Color m_color = Color.white;AnimationCurve m_curve = AnimationCurve.Linear(0,0,10,10);Vector2 size =newVector2(100,100);int flags =0;string[] options =newstring[]{"CanJump","CanShoot","CanSwim","Canabc","Canacc"};GameObject game;bool showFoldout;Vector2 m_vector2 =newVector2();Vector3 m_vector3 =newVector3();Vector4 m_vector4 =newVector4();Transform selectedTransform;GameObject selectedGameObject;bool fold;bool fold2;[MenuItem("MyWindow/Window")]staticvoidwindow(){EditorGUIExample mybianyi =GetWindow<EditorGUIExample>();
mybianyi.Show();}privatevoidOnGUI(){// GUILayout.Width 控制在窗口中物体所在的宽// GUILayout.Height 控制在窗口中物体所在的高//它们的返回的类型为GUILayoutOption#region GUILayout.Label 提示语句
GUILayout.Label("我的编译器(My compiler)", GUILayout.Width(50), GUILayout.Height(10));//提示语句#endregion#region GUILayout.Button( 按钮
GUILayout.Label("按钮");if(GUILayout.Button("按钮", GUILayout.Width(40), GUILayout.Height(40))){}#endregion#region GUILayout.TextField 文本
GUILayout.Label("文本(可以输入)");
Textfield = GUILayout.TextField(Textfield);//单行//参数2 maxLength 最大有效长度// Textfield = GUILayout.TextField(Textfield,5);#endregion#region GUILayout.Space 空行//参数为float类型代表空行的距离
GUILayout.Space(10);#endregion#region EditorGUILayout.Toggle 开关(跟Toggle一样)
fg = EditorGUILayout.Toggle("Toggle", fg);//开关#endregion#region GUILayout.BeginHorizontal 横向
GUILayout.BeginHorizontal();//可以在里面存放多个如果不规定大小系统会平均分配大小
GUILayout.Button("按钮");
Textfield = GUILayout.TextField(Textfield);
GUILayout.EndHorizontal();//结束语一定要有#endregion#region GUILayout.BeginVertical 纵向
GUILayout.BeginVertical();//可以在里面存放多个如果不规定大小系统会平均分配大小
GUILayout.Button("按钮");
Textfield = GUILayout.TextField(Textfield);
GUILayout.EndVertical();//结束语一定要有#endregion#region GUILayout.HorizontalSlider(横) GUILayout.VerticalSlider(纵) Slider(分横纵 上横下纵)
sum = GUILayout.HorizontalSlider(sum,0,10);// sum = GUILayout.VerticalSlider(sum, 0, 10);
GUILayout.Space(20);#endregion#region EditorGUILayout.Popup 下拉
count = EditorGUILayout.Popup("下拉:", count, pathname);#endregion#region GUILayout.BeginScrollView 滑动列表 //两个true可以让横纵两条线显示出了//两个false可以让横纵两条线不显示出来
size = GUILayout.BeginScrollView(size,true,true);
GUILayout.EndScrollView();#endregion#region EditorGUILayout.BoundsField (边界输入) EditorGUILayout.ColorField(颜色输入) EditorGUILayout.CurveField(曲线输入) 输入框//BoundsField 边界输入框
_bounds = EditorGUILayout.BoundsField("BoundsField:", _bounds);//ColorField 颜色输入框
m_color = EditorGUILayout.ColorField("ColorField:", m_color);//CurveField 曲线输入框
m_curve = EditorGUILayout.CurveField("CurveField:", m_curve);#endregion#regionEditorGUILayout.TagFieldtag(标签)
tag = EditorGUILayout.TagField("TagField:", tag);#endregion#region EditorGUILayout.LayerField(可以获取所有的Layer)//Layerfield 可以获取所有的Layer
Layerfield = EditorGUILayout.LayerField("LayerField:", Layerfield);#endregion#region EditorGUILayout.MaskField (下拉可以多选)
flags = EditorGUILayout.MaskField("MaskField:", flags, options);//Debug.Log(flags);// 除了数组的第一个是1 后面全是2的幂(幂为对应的下标) 如果多选它们会相加 系统默认会添加Nothing (对应的值0) 和Everything(-1)#endregion#region EditorGUILayout.ObjectField(选择物体)
game =(GameObject)EditorGUILayout.ObjectField(game,typeof(GameObject),true);//typeof(类型) 确定好类型系统会自动帮我找到所有的关于这个类型的物体#endregion#region EditorGUILayout.Foldout 折叠
showFoldout = EditorGUILayout.Foldout(showFoldout,"折叠子物体:");if(showFoldout){
EditorGUI.indentLevel++;//缩进级别
EditorGUILayout.LabelField("折叠块内容1");
EditorGUI.indentLevel++;
EditorGUILayout.LabelField("折叠块内容2");
EditorGUI.indentLevel--;
EditorGUI.indentLevel--;
EditorGUILayout.LabelField("折叠块内容3");}#endregion#region EditorGUILayout.BeginToggleGroup(开关)
ToggleGroup = EditorGUILayout.BeginToggleGroup(BeginToggleGroup, ToggleGroup);
Textfield = GUILayout.TextField(Textfield);
EditorGUILayout.EndToggleGroup();#endregion#region GUILayout.FlexibleSpace(布局之间左右对齐)
EditorGUILayout.BeginHorizontal();//开始最外层横向布局
GUILayout.FlexibleSpace();//布局之间左右对齐
GUILayout.Label("-----------------分割线-----------------");
GUILayout.FlexibleSpace();//布局之间左右对齐
EditorGUILayout.EndHorizontal();#endregion#region EditorGUILayout.HelpBox(提示语句)
EditorGUILayout.HelpBox("HelpBox Error:", MessageType.Error);//红色错误号
EditorGUILayout.HelpBox("HelpBox Info:", MessageType.Info);//白色提示号
EditorGUILayout.HelpBox("HelpBox None:", MessageType.None);//解释号
EditorGUILayout.HelpBox("HelpBox Warning:", MessageType.Warning);//黄色警告号#endregion#region EditorGUILayout.Slider(Slider)
sliders = EditorGUILayout.Slider("Slider:", sliders,0,10);#endregion#region EditorGUILayout.TextArea(text 自适应高)
m_textArea = EditorGUILayout.TextArea(m_textArea);//可以多行#endregion#region GUILayout.PasswordField(可以改变成对应的符号)
EditorGUILayout.BeginHorizontal();
GUILayout.Label("密码text", GUILayout.Width(60));
PasswordField = GUILayout.PasswordField(PasswordField,'*');//可以改变成对应的符号
EditorGUILayout.EndHorizontal();#endregion#region EditorGUILayout.Vector2Field EditorGUILayout.Vector3Field EditorGUILayout.Vector4Field
m_vector2 = EditorGUILayout.Vector2Field("Vector2:", m_vector2);
m_vector3 = EditorGUILayout.Vector3Field("Vector3:", m_vector3);
m_vector4 = EditorGUILayout.Vector4Field("Vector4:", m_vector4);#endregion#region EditorGUILayout.SelectableLabel (可以复制粘贴)
EditorGUILayout.SelectableLabel("SelectableLabel");#endregion#region EditorGUILayout.MinMaxSlider (取值范围)
EditorGUILayout.LabelField("Min Val:", minVal.ToString());
EditorGUILayout.LabelField("Max Val:", maxVal.ToString());
EditorGUILayout.MinMaxSlider("MinMaxSlider",ref minVal,ref maxVal, minLimit, maxLimit);//现在最小 现在最大 最小长度 最大长度 #endregion#region EditorGUILayout.IntSlider(只能是整数)
slidera = EditorGUILayout.IntSlider("IntSlider:", slidera,1,10);#endregion#region EditorGUILayout.InspectorTitlebar(将物体返回回来)//Transform selectedTransform = Selection.activeGameObject.transform;//GameObject selectedGameObject = Selection.activeGameObject;//选择物体(GameObject)//fold = EditorGUILayout.InspectorTitlebar(fold, selectedTransform);//fold2 = EditorGUILayout.InspectorTitlebar(fold2, selectedGameObject);#endregion}}
版权归原作者 游戏开发小Y 所有, 如有侵权,请联系我们删除。