Unity3D入门篇——GUI控件

Unity为大家提供了一套很完整的图形化界面引擎,包括窗口、文本框、拖动条等。下面将为大家介绍主要的基本控件。


一、Label控件

       Label控件(标签控件)以文本的形式来显示一串字符串信息,该控件不仅可以输入字符串信息,还可以输入贴图。

参数:
position : Rect ——标签在屏幕上的矩形位置,(起点x坐标,起点y坐标,标签宽度,标签高度)。
text : String ——在标签上显示的文本内容。
image : Texture ——在标签上显示的纹理。
content : GUIContent ——在标签上显示的文本、图片和信息提示。
style : GUIStyle ——使用的样式,如果不使用,那么标签的样式使用的就是当前的GUISkin皮肤
描述:
在屏幕上创建一个文本或纹理的标签。

标签没用用户交互,不捕捉鼠标点击,如果想创建响应用户输入的控件,可以使用Box控件。

案例:绘制一个“Hello World!”标签和一个图片标签
       首先,在Project视图中的一个文件夹上右击→Create→C# Script,然后为其重命名为Label。在这里需要注意的是脚本文件的名称必须和脚本中pulic class XXX :MonoBehaviour一样,不然会出错的。双击打开脚本编写器,接着就是编写脚本,编写的内容如下:
[csharp]  view plain copy
  1. using UnityEngine;  
  2. using System.Collections;  
  3.   
  4. public class Label : MonoBehaviour {  
  5.   
  6.     public Texture img;//图片/  
  7.       
  8.     void OnGUI()  
  9.     {  
  10.         GUI.Label(new Rect(10,10,200,20),"Hello World!");  
  11.         GUI.Label(new Rect(10,50,200,200),img);  
  12.     }  
  13. }  
        在这个脚本中只用一个OnGUI方法,该方法为绘制界面的方法,所有GUI的绘制都需要在这个方法中实现。
        另外,脚本必须绑定到对象上才会执行自身的生命周期。绑定的方法很简单,就是在Project视图中将该脚本文件拖拽到Hierarchy视图中的一个对象上即可。在这里我们将Label.cs脚本绑定到Main Camera对象上。
       接着是图片变量的赋值,首先只用公有变量才能从Project中拖拽赋值或者手动输入赋值,即前面有public关键字。

游戏视图:


二、Button控件和RepeatButton控件

       Button控件(按钮控件)用来进行用户的行为判断,例如:确认,取消,退出等。按钮有3中状态:未点击,点击,点击后,在一般情况下,我们只用到未点击和点击这2种情况。

Parameters(参数):
position : Rect ——按钮在屏幕上的矩形位置,(起点x坐标,起点y坐标,按钮宽度,按钮高度)
text : String ——按钮上显示的文本内容
image : Texture ——按钮上显示的图片纹理
content : GUIContent ——按钮的文本,图片和提示。
style : GUIStyle ——按钮使用的样式,如果不使用,则按钮的样式使用的就是当前的GUISkin皮肤


Returns(返回):
布尔值——当该按钮被点击时返回true

Description(描述):
创建一个单次按下按钮,当用户点击按钮时立即触发事件。

RepeatButton(连续按钮)用于持续按下时触发事件的按钮,普通的Button按钮适用与单次按下。

参数与普通的Button没什么大的区别。

Returns返回值:
布尔值——当用户按下该按钮时返回true。

描述:
创建一个按钮,只要用户按住不放,将一直被激活。
从按下按钮到释放按钮的时间内重复触发其Click事件,也就是说他将连续不停的发送点击事件。

案例:创建3个按钮,分别为普通文本按钮,普通图片按钮,连续按钮。再创建了3个标签,第一个标签用于显示用户按下的按钮是哪一个,第二个标签是用来显示普通图片按钮按下后,绘制一个图片出来,第三个标签用来记录连续按钮按下的时间。
[csharp]  view plain copy
  1. using UnityEngine;  
  2. using System.Collections;  
  3.   
  4. public class Button : MonoBehaviour {  
  5.   
  6.     public Texture img;//公有变量图片/  
  7.     private Texture img0;  
  8.     private string info;//显示的信息/  
  9.     private int frameTime;//记录按下的时间/  
  10.       
  11.     void Start()  
  12.     {  
  13.         //初始化/  
  14.         info = "请您点击按钮";  
  15.         frameTime = 0;  
  16.     }  
  17.       
  18.     void OnGUI()  
  19.     {  
  20.         //标签/  
  21.         GUI.Label(new Rect(50,10,200,20),info);       
  22.         //普通按钮,点击后显示Hello World  
  23.         if(GUI.Button(new Rect(50,250,200,20),"Hello World"))  
  24.         {  
  25.             info = "Hello World";  
  26.         }  
  27.         //标签/  
  28.         GUI.Label(new Rect(280,10,200,200),img0);  
  29.         //图片按钮,点击后显示图片/  
  30.         if(GUI.Button(new Rect(280,250,200,200),img))  
  31.         {  
  32.             img0 = img;  
  33.             info = "您点击了图片按钮";  
  34.         }  
  35.         //标签/  
  36.         GUI.Label(new Rect(500,10,200,20),"持续按下的时间:" + frameTime);  
  37.         //连续按钮,点击后显示按下的时间/  
  38.         if(GUI.RepeatButton(new Rect(500,250,200,20),"持续按下"))  
  39.         {  
  40.             frameTime ++ ;  
  41.             info = "您按下了连续按钮";  
  42.         }         
  43.         //每当鼠标按下时将frameTime重置,一遍进行下次记录/  
  44.         if(Input.GetMouseButtonDown(0))  
  45.         {  
  46.             frameTime = 0;  
  47.         }  
  48.     }  
  49. }  
在这里依旧需要将脚本绑定Main Camera上,并且将需要赋值的公有变量进行赋值,在Label控件中我已经介绍了,这里就不废话了~

游戏视图:







———————————————
参考文献:
《Unity3D 游戏开发》宣玉松
 Unity Script Reference

你可能感兴趣的:(Unity3d,unity,gui,unity3d)