鄰近年底,心也有些散亂,加上工作忙了一陣,在達內培訓的課程也落下了不少。對unity3d的熱度似乎也有點點下降。痛定思痛,又在淘寶上買了寫蠻牛網的視頻。總之不管是用任何手段都要逼着自己不要浪費了培訓的那些錢。言歸正傳,現在開啟GUI篇章。
GUI這東西在我腦子里,自動歸結為.net的用戶交互控件,實際上應該也就是這個樣子,類似於button,lable,textbox....的這些東西在GUI里面都有。
這一節講一些簡單的GUI。
先來看效果圖:
1,紅框部分,button按鈕的text值隨着在文本框的輸入文本變化而變化,始終保持一致。
2.Toggle其實是一個toggle控件,類似於winfrom的RadioButton,它的未知隨着HorizontalScrollbar控件的拖動而拖動。
代碼其實挺簡單的,如下:
using UnityEngine; using System.Collections; public class Gui : MonoBehaviour { public GUIStyle buttonstyle; string text=""; bool result; float hsliderVale; // Use this for initialization void Start () { } // Update is called once per frame void Update () { } void OnGUI(){ hsliderVale = GUI.HorizontalScrollbar (new Rect(80, 100, 100, 30),hsliderVale,2,0,10); result = GUI.Toggle(new Rect(10 * hsliderVale, 170, 100, 30),result,"Toggle"); text = GUI.TextField(new Rect (310, 330, 100, 40),text); GUI.Button(new Rect(180,120,100,150),"這是一個button按鈕","button"); GUI.Button(new Rect(110,120,200,210),"這是一個button按鈕","toggle"); GUI.Label(new Rect(0,0,200,50),"box類型的lable","box"); GUI.Label (new Rect (150, 110, 200, 100), "buttonstyle"); if (GUI.RepeatButton(new Rect (310, 220, 200, 100),text) ) { print("用戶單擊了重復按鈕"); } } }
Rect()這個定位函數被多次用到,其具體的定義如下:
Rect(x,y,w,h)
x表示水平距離,即以左上角為0,0點,距離左邊的距離
y表示垂直距離,距離頂部的距離
w表示這個矩形的寬度
h表示這個矩形的高度
UnityGUI控制是利用一類被稱為OnGUI()的函數,只要在控制腳本激活的狀態下,OnGUI()函數可以在每幀調用,就像Update( )函數一樣。