天天看点

<Unity3D>Unity3D入门篇——第五讲 GUI控件(三)六、Toolbar控件七、Toggle控件

六、Toolbar控件

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

<Unity3D>Unity3D入门篇——第五讲 GUI控件(三)六、Toolbar控件七、Toggle控件

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

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

Description(描述): 创建工具栏

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

Toolbar.cs

using UnityEngine;
using System.Collections;

public class Toolbar : MonoBehaviour {

	//制作一个工具栏,当点击工具栏中的任意按钮,将通过一个标签来显示该按钮的信息
	
	//记录Toolbar按钮的ID
	private int toolbarID;
	//用于标签显示的信息
	private string info;
	//Toolbar按钮上的信息
	private string[] toolbarInfo;
	void Start () 
	{
		//初始化
		info = "";
		toolbarInfo = new string[] {"File","Edit","Assets","GameObject","Help"};
	}
	
	void OnGUI()
	{
		//绘制Toolbar
		toolbarID = GUI.Toolbar(new Rect(20,20,500,20),toolbarID,toolbarInfo);
		//根据toolbarID来获得info
		info = toolbarInfo[toolbarID];
		//绘制标签
		GUI.Label(new Rect(40,60,200,20),info + " 被选中!");
	}
}
           

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

<Unity3D>Unity3D入门篇——第五讲 GUI控件(三)六、Toolbar控件七、Toggle控件

                                        图5.6.1 运行时初始状态

<Unity3D>Unity3D入门篇——第五讲 GUI控件(三)六、Toolbar控件七、Toggle控件

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

七、Toggle控件

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

<Unity3D>Unity3D入门篇——第五讲 GUI控件(三)六、Toolbar控件七、Toggle控件

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

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

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

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

Toggle.cs

using UnityEngine;
using System.Collections;

public class Toggle : MonoBehaviour {

	// 制作单项题
	
	//问题
	private string question;
	//标签信息
	private string info;
	//四个Toggle按钮是否按下
	private bool toggle0 = false;
	private bool toggle1 = false;
	private bool toggle2 = false;
	private bool toggle3 = false;
	
	//用来保证只有一个选项被选中
	private bool[] isChanages = new bool[] {false,false,false,false};
	
	void Start () 
	{
		//初始化
		info = "";
		question = "桌子上原来有12支点燃的蜡烛,先被风吹灭了3根,不久又一阵风吹灭了2根,最后桌子上还剩几根蜡烛呢?";		
	}
	
	void OnGUI()
	{
		//使用Label来显示问题
		GUI.Label(new Rect(40,40,300,50),question);
		//四个选项
		toggle0 = GUI.Toggle(new Rect(45,100,100,20),toggle0,"  A.  2");
		toggle1 = GUI.Toggle(new Rect(45,120,100,20),toggle1,"  B.  3");
		toggle2 = GUI.Toggle(new Rect(45,140,100,20),toggle2,"  C.  5");
		toggle3 = GUI.Toggle(new Rect(45,160,100,20),toggle3,"  D.  12");
		//显示答题对错信息
		GUI.Label(new Rect(40,200,200,20),info);
		//提交按钮
		if(GUI.Button(new Rect(100,180,100,20),"提交"))
		{
			if(toggle2)
			{
				info = "恭喜您答对了!";
			}
			else
			{
				info = "不好意思,您答错了!";
			}
		}
		//确保只有一个选项被选中
		//备注:我也就只能想到这么土的方法了,如果大家有好的方法请告诉我,感激不尽!
		if(GUI.changed)
		{			
			if(toggle0 && !isChanages[0])
			{
				toggle1 = false;
				toggle2 = false;
				toggle3 = false;				
				isChanages = new bool[] {true,false,false,false};
				
			}
			if(toggle1 && !isChanages[1])
			{
				toggle0 = false;
				toggle2 = false;
				toggle3 = false;
				isChanages = new bool[] {false,true,false,false};
			}
			if(toggle2 && !isChanages[2])
			{
				toggle1 = false;
				toggle0 = false;
				toggle3 = false;				
				isChanages = new bool[] {false,false,true,false};
			}
			if(toggle3 && !isChanages[3])
			{
				toggle1 = false;
				toggle2 = false;
				toggle0 = false;				
				isChanages = new bool[] {false,false,false,true};
			}			
		}		
	}	
}
           

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

<Unity3D>Unity3D入门篇——第五讲 GUI控件(三)六、Toolbar控件七、Toggle控件

                    图5.7.1 运行时初始状态

<Unity3D>Unity3D入门篇——第五讲 GUI控件(三)六、Toolbar控件七、Toggle控件

                        图5.7.2 回答错误情况

<Unity3D>Unity3D入门篇——第五讲 GUI控件(三)六、Toolbar控件七、Toggle控件

                    图5.7.3 回答正确情况

继续阅读