天天看點

<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 回答正确情況

繼續閱讀