Toggle控件
Toggle(开关)控件用来创建一个开关按钮,跟单选框一样。其返回值为bool类型。
public static bool Toggle (Rect position, bool value, string text);
public static bool Toggle (Rect position, bool value, Texture image);
public static bool Toggle (Rect position, bool value, GUIContent content);
public static bool Toggle (Rect position, bool value, string text, GUIStyle style);
public static bool Toggle (Rect position, bool value, Texture image, GUIStyle style);
public static bool Toggle (Rect position, bool value, GUIContent content, GUIStyle style);
public static bool Toggle (Rect position, int id, bool value, GUIContent content, GUIStyle style);
- position : Rect —— 该按钮在屏幕上的矩形位置
- value : boolean —— 该按钮是开或关?
- text : String —— 按钮显示的文本内容
- image : Texture —— 按钮显示的图片纹理
- content : GUIContent —— 按钮的文本、图片和提示信息
- style : GUIStyle —— 使用的样式。如果不设置,则该控件将使用当前的GUISkin皮肤
返回值:布尔类型——按钮的新值
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};
}
}
}
}