邻近年底,心也有些散乱,加上工作忙了一阵,在达内培训的课程也落下了不少。对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( )函数一样。