1.基础
创建每种控件的方法都是雷同的。第一个参数rect,表示位置;后面的参数表示控件的内容,可以包含字符串和图片,tooltips,可以单独用其中一个, 也可以使用GUIContent,使用多个。还有一个guistyle。
2.控件类型
Label
Button,抬起时返回true;RepeatButton,按住时一直返回true。通过if来判断
void OnGUI () {
if (GUI.RepeatButton (new Rect (25, 25, 100, 30), "RepeatButton")) {
// This code is executed every frame that the RepeatButton remains clicked
}
}
TextField,可编辑。返回值为我们在文本框中编辑的内容。所以要把该返回值再用来创建TextField
TextArea,可编辑。与TextField区别是可以换行,可多行显示
private string textFieldString = "text field";
void OnGUI () {
textFieldString = GUI.TextField (new Rect (25, 25, 100, 30), textFieldString);
}
Toggle,一个checkbox,也就是单选框。同样的,需要把返回值再用来创建Toogle
private bool toggleBool = true;
void OnGUI () {
toggleBool = GUI.Toggle (new Rect (25, 25, 100, 30), toggleBool, "Toggle");
}
ToolBar,创建多个button,同时只能选中一个。需要利用返回值。
SelectionGrid,相当于多行的ToolBar
private int selectionGridInt = 0;
private string[] selectionStrings = {"Grid 1", "Grid 2", "Grid 3", "Grid 4"};
void OnGUI () {
selectionGridInt = GUI.SelectionGrid (new Rect (25, 25, 300, 60), selectionGridInt, selectionStrings, 2);//2表示水平方向上排2个button
}
HorizontalSlider和VerticalSlider水平滑动条和垂直滑动条。滑动时返回值在最大值和最小值之间改变。需要利用返回值
HorizontalScrollBar和VerticalScrollBar与滑动条区别不大。多了个参数,控制滑块大小。
ScrollView
使用GUI.BeginScrollView()和GUI.EndScrollView();其中BeginScrollView需要两个矩形作为参数。第一个矩形是ScrollView的可视范围。第二个矩形是ScrollView的拖动范围。
3.GUILayout
自动布局。GUI(固定布局)可以和GUILayout(自动布局)同时使用
在固定布局时,可以使用GUI.BeginGroup 和GUI.EndGroup来定义一个新的空间来放置多个控件,相当于在屏幕空间中定义了一个小的屏幕,超出这个小屏幕的空间将被裁减。
在自动布局时,可以用GUILayout.BeginArea和GUILayout.EndArea来实现类似的功能。在Area内的控件,像Box和Button这种带有背景的控件会自动拉伸到整个Area宽度。如果不在Area内,控件会有一个默认宽度,不会拉伸到和屏幕同宽。
可以使用GUILayoutOption来覆盖GUILayout的一些设置。GUILayoutOption我们不直接使用,而是使用GUILayout.Width等方法获取
void OnGUI () {
GUILayout.BeginArea (new Rect (100, 50, Screen.width-200, Screen.height-100));
GUILayout.Button ("I am a regular Automatic Layout Button");
GUILayout.Button ("My width has been overridden", GUILayout.Width (95));
GUILayout.EndArea ();
}
如上例,本来第二个button的宽度应该跟Area同宽,但是加上
GUILayout.Width (95)
还有如果Button不在Area里,会有一个默认宽度,也可以用GUILayout.Width来自定义宽度。
但是再宽也不会超过屏幕宽度或Area宽度(被裁减掉了)
自动布局时,默认情况下,各控件由上到下依次显示。
可以使用
GUILayout.BeginHoriztontal()
,
GUILayout.EndHorizontal()
,
GUILayout.BeginVertical()
, and
GUILayout.EndVertical()
.来控制各控件水平显示或垂直显示。可嵌套。