编辑器中的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
看到这个博客里很详细可以移步去看