UG1L10——GUILayout

本章代码关键字

1
2
3
4
5
6
7
8
9
10
11
12
13
14
GUILayout                    //由它绘制的UI控件会自动布局,由它绘制的
GUILayout.BeginArea() //确定自动布局的位置和可见范围
GUILayout.EndArea() //一定是与GUILayout.BeginArea()成对出现!将需要确定自动布局的位置和可见范围的部分包裹起来
GUILayout.BeginHorizontal() //使控件横向布局
GUILayout.EndHorizontal() //一定是与GUILayout.BeginHorizontal()成对出现!将需要横向布局的UI绘制部分代码包裹起来
//下面的函数都可以传入到GUILayout的UI控件绘制参数内,原来控制控件的样式
GUILayout.Width() //控件的固定宽
GUILayout.Height() //控件的固定高
GUILayout.MinWidth() //允许控件的最小宽
GUILayout.MinHeight() //允许控件的最小高
GUILayout.MaxWidth() //允许控件的最大宽
GUILayout.MaxHeight() //允许控件的最大高
GUILayout.ExpandWidth() //允许或禁止水平扩展,也就是不会为了和某个UI控件对齐而拓展尺寸
GUILayout.ExpandHeight() //允许或禁止垂直扩展,也就是不会为了和某个UI控件对齐而拓展尺寸

自动布局

GUILayout​可以绘制所有之前提过GUI​的UI控件,
相对于原来GUI​的绘制相比,GUILayout​绘制UI控件不需要传入Rect​参数,它会自动设置
也就是说,GUILayout​会自动对UI控件从上到下进行布局,而无需自己编写位置逻辑

1
2
3
4
5
6
7
8
9
10
11
12
13
14
private void OnGUI()
{
//无需再手动填入坐标信息,会自动布局
//主要用于编辑器开发 用来做游戏UI不太合适
GUILayout.BeginArea(new Rect(100, 100, 100, 100)); //确定自动布局的位置和可见范围
GUILayout.BeginHorizontal(); //使控件横向布局

GUILayout.Button("123", GUILayout.Height(300));
GUILayout.Button("1234");
GUILayout.Button("12345");

GUILayout.EndHorizontal(); //一定是与GUILayout.BeginHorizontal();成对出现!将需要横向布局的部分包裹起来
GUILayout.EndArea(); //一定是与GUILayout.BeginArea();成对出现!将需要确定自动布局的位置和可见范围的部分包裹起来
}

主要用于制作编辑器界面,因为编辑器界面相对简单,类似于下面的界面:

image

布局选项

以下方法返回的GUILayoutOpiton​值都可以传入到GUILayout​的UI控件绘制方法内
原来控制GUILayout​对UI控件的自动布局的细节

1
2
3
4
5
6
7
8
9
10
11
12
13
14
//控件的固定宽高
GUILayout.Width(300);
GUILayout.Height(200);
//允许控件的最小宽高
GUILayout.MinWidth(50);
GUILayout.MinHeight(50);
//允许控件的最大宽高
GUILayout.MaxWidth(100);
GUILayout.MaxHeight(100);
//允许或禁止水平或垂直扩展,也就是UI控件不会为了和某个UI控件对齐而拓展尺寸
GUILayout.ExpandWidth(false); //禁止
GUILayout.ExpandWidth(true); //允许
GUILayout.ExpandHeight(false); //禁止
GUILayout.ExpandHeight(true); //允许