[原]Unity3D深入浅出 - GUI控件

Unity的GUI类提供了丰富的界面控件,通过组合这些控件,完成和用户交互的界面。

  • Lable:绘制文本和图片
  • Box:绘制一个图形框
  • Button:绘制一个响应单击事件的按钮
  • RepeatButton:绘制一个处理连续按下事件的按钮
  • TextField:绘制一个单行文本输入框
  • PasswordField:绘制一个密码输入框
  • TextArea:绘制一个多行文本输入框
  • Togle:绘制一个开关
  • Toolbar:绘制一个工具条
  • SelectionGrid:绘制一组网格按钮
  • HorizontalSlider:绘制一个水平方向的滑动条
  • VerticalSlider:绘制一个垂直方向的滑动条
  • HorizontalScrollbar:绘制一个水平方向的滚动条
  • VerticalScrollbar:绘制一个垂直方向的滚动条
  • Window:绘制一个窗口,可以用于放置控件。

GUI代码需要在OnGUI函数中调用才能绘制,如果放在Update函数中会报错。

GUI控件一般需要传入一个Rect参数来指定屏幕的绘制区域。例如Rect(20,40,100,60),则绘制在离屏幕左上角坐标(20,40)的位置,宽度为100,高度为60。

注意:在UnityGUI中,屏幕坐标系以左上角为原点(0,0),右下角为(Screen.Widht,Screen.Height)

 

GUILayout自动布局:

在unity中GUI控件的布局方式有两种,一种为固定布局,即在绘制控件时传入的位置参数;另外一种就是GUILayout自动布局,这种方式一般用于开发者不太在乎控件的精确位置的情况下。

如果想使用自动布局,绘制时使用GUILayout来绘制控件。

示例:

void OnGUI(){
    //固定布局
    GUI.Button(new Rect(20,40,100,60),"GUI button");
    //自动布局
    GUILayout.Button("I am an automatic layout button")
}

 

区域Area:

有时候使用自动布局,当控件数量过多的时候则会显得摆放得太杂乱,这时候可以使用GUILayout.BeginArea和GUILayout.EndArea来指定自动布局要摆放的区域,对显示区域大致划分。

示例:

void OnGUI()
{
   GUILayout.BeginArea(new Rect(Screen.width/2,Screen.height/2,200,200);
   //在这之间绘制控件
   GUILayout.EndArea();
}

另外还有GUILayer.BeginHorizontal和GUILayer.EndHorizontal,来设置水平布局。

GUILayout.BeginVertical和GUILayer.EndVertical,类设置垂直布局。

posted @ 2014-08-27 13:23  Tonge  阅读(...)  评论(...编辑  收藏