使用GUI我们可以十分方便并且简单的绘制出登录,登出,装备栏,属性栏等界面,这在游戏开发中是不可或缺的一部分。
在Unity3D引擎中,提供了Toggle,Button,ReapeatButton,PasswordField,TextArea等各种控件
在学习过程中可以参考官方的在线文档;https://docs.unity3d.com/ScriptReference/UI.Button.html
1.创建一个新的 scene
File------New Scene
2.创建一个脚本
命名为 MyGUI
之前还犯下了一个小错误直接命名为GUI,结果出了问题找不到函数还不知道如何解决,google后发现有人和我犯一样的错误..
先绘制一个BOX来将我们在视觉上框起来,这里用到Rect这个坐标变量
为了能够方便修改,还定义了Left和Top两个整形变量,框体是从左上角开始绘制的,因此这里的坐标也是左上角的坐标
Rect(x轴坐标,y轴坐标,宽度,高度)
Box的绘制参考:
GUI.Box(new Rect(Left-15, Top -10, 150, 300), "Login");
Login就是标题的名称
Label文本的绘制:
GUI.Label(new Rect(Left, Top + 80, 100, 20), "User:");
TextArea的绘制:
在这里需要先定义一个全局变量UserName,因为我们的函数是写在Update中的,每帧都会执行一次。
这里这样写,将使得返回值赋予给UserName
UserName = GUI.TextArea(new Rect(Left, Top + 100, 100, 20), UserName);
Toggle的绘制:
Toggle是一个开关变量,返回值为布尔型,因此这里要在全局定义一个bool变量
两个Toggle型切换的写法如下:
LoginRoot=GUI.Toggle(new Rect(Left + 50, Top+ 160, 50, 20),LoginRoot,"User");
LoginRoot= GUI.Toggle(new Rect(Left + 50, Top + 180, 80, 20), !LoginRoot, "Manager");
MyGUI.cs
using UnityEngine;
using System.Collections;
public class MyGUI : MonoBehaviour {
private string UserName = "";
private string Key = "";
private bool LoginRoot = false;
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
}
///
/// 每当重绘时候都会执行这一个方法
///
void OnGUI()
{
int Left = 205;
int Top = 100;
GUI.Box(new Rect(Left-15, Top -10, 150, 300), "Login");
if (GUI.Button(new Rect(Left, Top +235, 70, 20), "Start"))
print("Button Check");
// GUI.RepeatButton(new Rect(Left,Top + 60,100, 20), "RepeatButton");
GUI.Label(new Rect(Left, Top + 80, 100, 20), "User:");
UserName = GUI.TextArea(new Rect(Left, Top + 100, 100, 20), UserName);
GUI.Label(new Rect(Left, Top + 120, 100, 20), "Password");
Key = GUI.PasswordField(new Rect(Left, Top + 140, 100, 20),Key,'*' );
LoginRoot=GUI.Toggle(new Rect(Left + 50, Top+ 160, 50, 20),LoginRoot,"User");
LoginRoot= GUI.Toggle(new Rect(Left + 50, Top + 180, 80, 20), !LoginRoot, "Manager");
}
}