Unity3D:GUI的绘制

    xiaoxiao2021-03-25  222

    使用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");     } }
    转载请注明原文地址: https://ju.6miu.com/read-670.html

    最新回复(0)