六、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
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上,然後運作。
圖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
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上,然後運作。
圖5.7.1 運作時初始狀态
圖5.7.2 回答錯誤情況
圖5.7.3 回答正确情況