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 } }
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 }
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 (); }
GUILayout.Width (95)
还有如果Button不在Area里,会有一个默认宽度,也可以用GUILayout.Width来自定义宽度。
但是再宽也不会超过屏幕宽度或Area宽度(被裁减掉了)