从零开始学习UNITY3D(GUI篇)

时间:2023-03-09 19:25:47
从零开始学习UNITY3D(GUI篇)

邻近年底,心也有些散乱,加上工作忙了一阵,在达内培训的课程也落下了不少。对unity3d的热度似乎也有点点下降。痛定思痛,又在淘宝上买了写蛮牛网的视频。总之不管是用任何手段都要逼着自己不要浪费了培训的那些钱。言归正传,现在开启GUI篇章。

GUI这东西在我脑子里,自动归结为.net的用户交互控件,实际上应该也就是这个样子,类似于button,lable,textbox....的这些东西在GUI里面都有。

这一节讲一些简单的GUI。

先来看效果图:

从零开始学习UNITY3D(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( )函数一样。