Editor工具开发实用篇:EditorGUI/EditorGUILayout的区别和EditorGUILayout的方法介绍

本文详细介绍了Unity中EditorGUILayout的使用,包括BeginFadeGroup、BeginHorizontal/Vertical、BeginScrollView、ToggleGroup、BoundsField等方法,以及如何创建可折叠标签、滑块、颜色选择器等编辑器界面元素。通过示例代码展示了这些控件的功能和效果。

目录

一:EditorGUI和EditorGUILayout区别

二:EditorGUILayout

1.EditorGUILayout.BeginFadeGroup(float value);

2.EditorGUILayout.BeginHorizontal  EditorGUILayout.BeginVertical

3.EditorGUILayout.BeginScrollView

4.EditorGUILayout.BeginToggleGroup&&EditorGUILayout.Toggle

5.EditorGUILayout.BoundsField  EditorGUILayout.BoundsIntField  public static Color ColorField   等等等....

6.EditorGUILayout.DropdownButton

7.EditorGUILayout.BeginBuildTargetSelectionGrouping

8.EditorGUILayout.EnumFlagsField

9.EditorGUILayout.EnumPopup

10.EditorGUILayout.Foldout

11.EditorGUILayout.GetControlRect

12.EditorGUILayout.GradientField

13.EditorGUILayout.HelpBox

14.EditorGUILayout.IntSlider||EditorGUILayout.Slider

15.EditorGUILayout.ObjectField

16.EditorGUILayout.PrefixLabel

17.EditorGUILayout.PropertyField

18.EditorGUILayout.SelectableLabel

19.EditorGUILayout.Space();

三.所有代码:


一:EditorGUI和EditorGUILayout区别

官方的api给出的是EditorGUILayout是EditorGUI的自动布局版本

什么意思呢?

如果我们进入到EditorGUI和EditorGUILayout的代码里可以看到EditorGUI类里有的方法 基本在EditorGUILayout类里都有相对应的方法 

区别就是:
EditorGUI类的方法基本上都要传入一个参数Rect包含了位置和大小而EditorGUILayout不需要

这样看的话我们着重了解一下EditorGUILayout

二:EditorGUILayout

常用方法:

1.EditorGUILayout.BeginFadeGroup(float value);

解释: 开始一个可隐藏/显示的组,并且过渡将生成动画。

eg:

private void OnGUI() {
        if(EditorGUILayout.BeginFadeGroup(0)) {
            GUILayout.TextArea("1\n2\n3\n4\n");
        }
        EditorGUILayout.EndFadeGroup();
    }

效果:

修改值为0.5f

private void OnGUI() {
        if(EditorGUILayout.BeginFadeGroup(0.5f)) {
            GUILayout.TextArea("1\n2\n3\n4\n");
        }
        EditorGUILayout.EndFadeGroup();
    }

效果:

 

修改为1

private void OnGUI() {
        if(EditorGUILayout.BeginFadeGroup(1)) {
            GUILayout.TextArea("1\n2\n3\n4\n");
        }
        EditorGUILayout.EndFadeGroup();
    }

效果:

 

2.EditorGUILayout.BeginHorizontal
  EditorGUILayout.BeginVertical

解释:开始一个水平组/垂直组
eg:

        EditorGUILayout.BeginHorizontal();
        GUILayout.Button("H_Btn1");
        GUILayout.Button("H_Btn2");
        EditorGUILayout.EndHorizontal();

        EditorGUILayout.BeginVertical();
        GUILayout.Button("V_Btn1");
        GUILayout.Button("V_Btn1");
        EditorGUILayout.EndVertical();

效果:

3.EditorGUILayout.BeginScrollView

解释:开始一个自动布局的滚动视图。
eg:

scrolpos = EditorGUILayout.BeginScrollView(scrolpos, GUILayout.Width(80), GUILayout.Height(80));
        GUILayout.Label("item1111111111111");
        GUILayout.Label("item2");
        GUILayout.Label("item3");
        GUILayout.Label("item4");
        GUILayout.Label("item5");
        EditorGUILayout.EndScrollView();

效果:

 

4.EditorGUILayout.BeginToggleGroup&&EditorGUILayout.Toggle

BeginToggleGroup  解释:开始一个垂直组,带有可一次性启用或禁用所有控件的开关
Toggle                       解释:创建一个开关
eg:

bool showToggle;
    private void OnGUI() {
        showToggle =  EditorGUILayout.BeginToggleGroup("toggleGroup", showToggle);
        EditorGUILayout.Toggle("toggle1", showToggle);
        EditorGUILayout.Toggle("toggle2", !showToggle);
        EditorGUILayout.EndToggleGroup();
    }

效果:

 

5.EditorGUILayout.BoundsField
  EditorGUILayout.BoundsIntField
  public static Color ColorField   等等等....

unity的api 或者C# api 的一些类型的展示
eg:

    Bounds Bounds;
    BoundsInt boundsInt;
    Color color;
    private void OnGUI() {
        EditorGUILayout.BeginVertical();
        Bounds = EditorGUILayout.BoundsField(Bounds);
        boundsInt = EditorGUILayout.BoundsIntField(boundsInt);
        color = EditorGUILayout.ColorField(color);
        EditorGUILayout.EndVertical();
    }

效果:

6.EditorGUILayout.DropdownButton

解释:创建一个能够对鼠标按下做出反应的按钮,用于显示您自己的下拉

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一梭键盘任平生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值