UnityEditor 编辑器扩展 4种GUI的使用 GUI GUILayout EditorGUI EditorGUILayout 加常用组件

编辑器中的GUI系统,我们可以分为四大类:

1、UnityEngine.GUI

2、UnityEngine.GUILayout

3、UnityEditor.EditorGUI

4、UnityEditor.EditorGUILayout

 

1和2所属的命名空间是UnityEngine

3和4所述的命名空间是UnityEditor

下面展示一下每一个的用法,具体的每一个类的函数不会全部列出来,在API中可以自己查找。

1

GUI需要自己去设计布局

private Void OnGUI()

{

GUI.Button(new Rect(0,0,100,30),"one Button");

GUI.Label(new Rect(100, 0, 100, 30), "Label");

GUI.PasswordField(new Rect(0, 30, 100, 30), "Password", '$');

GUI.Toggle(new Rect(100, 30, 100, 30), true, "Toggle");

}

 

2

GUILayout带有自适应的布局,相对的适应性要差了一些

private void OnGUI()

{

GUILayout.BeginHorizontal("Box"); //开始一个水平布局

GUILayout.Button("Button");

GUILayout.Label("Label");

GUILayout.PasswordField("Password", '$');

GUILayout.Toggle(true, "");

GUILayout.EndHorizontal(); //结束一个水平布局

GUILayout.BeginHorizontal("Box"); //开始一个水平布局

GUILayout.Button("Button");

GUILayout.Label("Label");

GUILayout.PasswordField("Password", '$');

GUILayout.Toggle(true, "");

GUILayout.FlexibleSpace(); //创建一个自适应的空白区域,也即是填满本次布局中的这部分空间 GUILayout.EndHorizontal(); //结束一个水平布局

GUILayout.BeginHorizontal("Box"); //开始一个水平布局

GUILayout.FlexibleSpace(); //创建一个自适应的空白区域,也即是填满本次布局中的这部分空间

GUILayout.Button("Button"); GUILayout.Label("Label");

GUILayout.PasswordField("Password", '$'); GUILayout.Toggle(true, "");

GUILayout.EndHorizontal(); //结束一个水平布局

}

 

private void OnGUI()

{

GUILayout.BeginVertical("Box"); //开始一个垂直布局 GUILayout.Button("Button");

GUILayout.Label("Label");

GUILayout.PasswordField("Password", '$');

GUILayout.Toggle(true, "");

GUILayout.EndVertical(); //结束一个垂直布局

}

 

//滚动视野

private Vector2 _scroll; private void OnGUI()

{

_scroll = GUILayout.BeginScrollView(_scroll);//开始一个滚动视野

GUILayout.BeginVertical("Box"); //开始一个垂直布局

for (int i = 0; i < 20; i++)

{

GUILayout.Button("Button" + (i + 1));

}

GUILayout.EndVertical(); //结束一个垂直布局

GUILayout.EndScrollView(); //结束一个滚动视野

}

 

3

EditorGUI和GUI差不多但是只在编辑界面显示,打包后是看不到的

private void OnGUI()

{

EditorGUI.ColorField(new Rect(0, 0, 100, 30), Color.red);

EditorGUI.DoubleField(new Rect(0, 30, 100, 30), 10);

EditorGUI.ProgressBar(new Rect(0, 60, 100, 30), 0.5f, "ProgressBar");

}

 

4

EditorGUILayout

private void OnGUI()

{

EditorGUILayout.BeginHorizontal("Box"); //开始一个水平布局

EditorGUILayout.LabelField("LabelField");

EditorGUILayout.PasswordField("PasswordField");

EditorGUILayout.RectField(Rect.zero);

EditorGUILayout.EndHorizontal(); //结束一个水平布

}

 

[MenuItem("Tool/Bug Reporter")]

static void showWindow()

{

EditorWindow.GetWindow(typeof(MyFirstWindow));//可变大小窗口

//Rect re=new Rect(0,0,500,500);

//EditorWindow.GetWindowWithRect(typeof(MyFirstWindow),re);//规定大小窗口

}

可以配合打开窗口使用,打开的就是OnGUI中显示的

下面是常用的组件

 

https://blog.csdn.net/dengshunhao/article/details/83000349

看到这个博客里很详细可以移步去看

 

你可能感兴趣的:(Unity编辑器)