<Unity3D>Unity3D入门篇——第五讲 GUI控件(三)

六、Toolbar控件


Toolbar(工具栏)控件用于创建工具栏,并且以Tab页面的形式来显示的。当我们选中其中任意一项,将返回该项的ID。通常我们使用GUI.Toolbar()来绘制工具来,其返回值为int型,即选项的ID号。



Parameters(参数):
position : Rect —— 用于工具栏在屏幕上的矩形位置。
selected : int —— 被选中的按钮的索引号
texts : string[] —— 显示在工具栏按钮上的字符串数组
images : Texture[] —— 在工具栏按钮上的图片纹理数组
contents : GUIContent[] —— 用于工具栏按钮的文本、图片和提示信息数组
style : GUIStyle —— 使用的样式,如果不设置,按钮的样式为当前的GUISkin皮肤

Returns(返回):
int型——被选中按钮的索引号

Description(描述):
创建工具栏

案例——制作一个工具栏,当点击工具栏中的任意按钮,将通过一个标签来显示该按钮的信息

Toolbar.cs
[csharp]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. using UnityEngine;  
  2. using System.Collections;  
  3.   
  4. public class Toolbar : MonoBehaviour {  
  5.   
  6.     //制作一个工具栏,当点击工具栏中的任意按钮,将通过一个标签来显示该按钮的信息  
  7.       
  8.     //记录Toolbar按钮的ID  
  9.     private int toolbarID;  
  10.     //用于标签显示的信息  
  11.     private string info;  
  12.     //Toolbar按钮上的信息  
  13.     private string[] toolbarInfo;  
  14.     void Start ()   
  15.     {  
  16.         //初始化  
  17.         info = "";  
  18.         toolbarInfo = new string[] {"File","Edit","Assets","GameObject","Help"};  
  19.     }  
  20.       
  21.     void OnGUI()  
  22.     {  
  23.         //绘制Toolbar  
  24.         toolbarID = GUI.Toolbar(new Rect(20,20,500,20),toolbarID,toolbarInfo);  
  25.         //根据toolbarID来获得info  
  26.         info = toolbarInfo[toolbarID];  
  27.         //绘制标签  
  28.         GUI.Label(new Rect(40,60,200,20),info + " 被选中!");  
  29.     }  
  30. }  


将脚本绑定到Main Camera上,然后运行。

                                        图5.6.1 运行时初始状态

                       图5.6.2 点击工具栏上的GameObject按钮

七、Toggle控件


Toggle(开关)控件用来创建一个开关按钮,跟单选框一样。其返回值为bool类型。



Parameters(参数):
position : Rect —— 该按钮在屏幕上的矩形位置
value : boolean —— 该按钮是开或关?
text : String —— 按钮显示的文本内容
image : Texture —— 按钮显示的图片纹理
content : GUIContent —— 按钮的文本、图片和提示信息
style : GUIStyle —— 使用的样式。如果不设置,则该控件将使用当前的GUISkin皮肤

Returns(返回):
布尔类型——按钮的新值

Description(描述):
创建一个开/关按钮,也就是类似通常说的单选按钮。

案例——制作一个单项题目

Toggle.cs
[csharp]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. using UnityEngine;  
  2. using System.Collections;  
  3.   
  4. public class Toggle : MonoBehaviour {  
  5.   
  6.     // 制作单项题  
  7.       
  8.     //问题  
  9.     private string question;  
  10.     //标签信息  
  11.     private string info;  
  12.     //四个Toggle按钮是否按下  
  13.     private bool toggle0 = false;  
  14.     private bool toggle1 = false;  
  15.     private bool toggle2 = false;  
  16.     private bool toggle3 = false;  
  17.       
  18.     //用来保证只有一个选项被选中  
  19.     private bool[] isChanages = new bool[] {false,false,false,false};  
  20.       
  21.     void Start ()   
  22.     {  
  23.         //初始化  
  24.         info = "";  
  25.         question = "桌子上原来有12支点燃的蜡烛,先被风吹灭了3根,不久又一阵风吹灭了2根,最后桌子上还剩几根蜡烛呢?";       
  26.     }  
  27.       
  28.     void OnGUI()  
  29.     {  
  30.         //使用Label来显示问题  
  31.         GUI.Label(new Rect(40,40,300,50),question);  
  32.         //四个选项  
  33.         toggle0 = GUI.Toggle(new Rect(45,100,100,20),toggle0,"  A.  2");  
  34.         toggle1 = GUI.Toggle(new Rect(45,120,100,20),toggle1,"  B.  3");  
  35.         toggle2 = GUI.Toggle(new Rect(45,140,100,20),toggle2,"  C.  5");  
  36.         toggle3 = GUI.Toggle(new Rect(45,160,100,20),toggle3,"  D.  12");  
  37.         //显示答题对错信息  
  38.         GUI.Label(new Rect(40,200,200,20),info);  
  39.         //提交按钮  
  40.         if(GUI.Button(new Rect(100,180,100,20),"提交"))  
  41.         {  
  42.             if(toggle2)  
  43.             {  
  44.                 info = "恭喜您答对了!";  
  45.             }  
  46.             else  
  47.             {  
  48.                 info = "不好意思,您答错了!";  
  49.             }  
  50.         }  
  51.         //确保只有一个选项被选中  
  52.         //备注:我也就只能想到这么土的方法了,如果大家有好的方法请告诉我,感激不尽!  
  53.         if(GUI.changed)  
  54.         {             
  55.             if(toggle0 && !isChanages[0])  
  56.             {  
  57.                 toggle1 = false;  
  58.                 toggle2 = false;  
  59.                 toggle3 = false;                  
  60.                 isChanages = new bool[] {true,false,false,false};  
  61.                   
  62.             }  
  63.             if(toggle1 && !isChanages[1])  
  64.             {  
  65.                 toggle0 = false;  
  66.                 toggle2 = false;  
  67.                 toggle3 = false;  
  68.                 isChanages = new bool[] {false,true,false,false};  
  69.             }  
  70.             if(toggle2 && !isChanages[2])  
  71.             {  
  72.                 toggle1 = false;  
  73.                 toggle0 = false;  
  74.                 toggle3 = false;                  
  75.                 isChanages = new bool[] {false,false,true,false};  
  76.             }  
  77.             if(toggle3 && !isChanages[3])  
  78.             {  
  79.                 toggle1 = false;  
  80.                 toggle2 = false;  
  81.                 toggle0 = false;                  
  82.                 isChanages = new bool[] {false,false,false,true};  
  83.             }             
  84.         }         
  85.     }     
  86. }  

将Toggle.cs脚本绑定到Main Camera上,然后运行。

                    图5.7.1 运行时初始状态

                        图5.7.2 回答错误情况

                    图5.7.3 回答正确情况
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值