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,類設置垂直布局。
