unity 编辑器----编辑器窗口控件创建和UI布局

unity编辑器窗口控件通过EditorGUILayout、EditorGUI、GUILayout和GUI来创建控件和实现布局。

EditorGUILayout、EditorGUI这两个是unity编辑器使用。

而GUILayout和GUI运行时游戏中和编辑器中都可以使用,但是这两个类就是服务于运行时,Monobehaviour的OnGUI()方法大家都知道吧,这两个类就是为OnGUI()的UIhuizhi服务的。

一.各类比较与对应关系

EditorGUILayout和运行时的GUILayout相对应,因为他们的布局方式是一样的,自动水平拉伸布满整个窗口的宽度,每个控件占一大行。这种方式我称它为自动布局吧。

EditorGUI和运行时的GUI相对应,必须设置固定大小和位置。这种方法我称它为手动布局

下面比较一下效果:

using UnityEditor;
using UnityEngine;
using UnityEngine.UI;

public class WinTest : EditorWindow
{
    public GameObject go;
    SerializedProperty serializedProperty;
    SerializedObject serializedObject;
    [MenuItem("test/win")]
    static void show()
    {
        EditorWindow.GetWindow<WinTest>().Show();
    }
    string tagStr = "dd";
    string tagStr1 = "dd1";
    Object source;
    void OnGUI()
    {
        //自动布局
        EditorGUILayout.TextField("自动布局-->EditorGUILayout");        //编辑器使用
        GUILayout.TextField("自动布局-->GUILayout");                    //运行时使用(编辑器下正常使用)

        //手动布局
        EditorGUI.TextField(new Rect(0,60,200,20), "手动布局-->EditorGUI"); //编辑器使用
        GUI.TextField(new Rect(0, 80, 200, 20), "手动布局-->GUI");           //运行时使用(编辑器下正常使用)
    }
}

运行效果:

 

这里就有点烦蒙了。既然对应的类是一样的,那为什么还定义这么多类,搞的都不知道使用那个了呢。。。

其实unity官方估计是为了把编辑器和运行时的UI分开才定义了这几个相对应的类。看了有些帖子不去区分到底使用哪个类,以至于乱使用。虽说混乱使用不影响功能,但是我还是建议区分开来。下面讲解只说明编辑器类EditorGUILayout和EditorGUI。不再使用运行时的类。

 

 

 

1.EditorGUILayout和EditorGUI

EditorGUILayout包含EditorGUI全部组件。多出了几个布局控件

EditorGUILayout多出的几个控件如下:

  • Space

    Make a small space between the previous control and the foll

  • 6
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值