需要源碼請點贊關注收藏后評論區(qū)留言并且私信~~~
在游戲開發(fā)過程中,游戲界面占據(jù)了非常重要的地位,玩家啟動游戲的時候,首先看到的就是游戲的UI,其中包含圖片、按鈕和高級控件等等,UGUI和GUI是Unity 3D中最常用的兩個UI系統(tǒng)。
一、GUI簡介
GUI是Graphical User Interface的縮寫,Unity的圖形界面系統(tǒng)能容易的快速創(chuàng)建出各種交互界面。游戲界面是游戲作品中不可或缺的部分,它可以為游戲提供導航,也可以為游戲內容提供重要的信息,同時是美化游戲的一種重要手段,Unity 3D內置了一套完整的GUI系統(tǒng),提供了從布局、空間到皮膚的一整套GUI解決方案,可以做出各種風格和樣式的GUI界面,目前Unity 3D沒有提供內置的GUI可視化編輯器,因此GUI界面的制作需要全部通過編寫腳本代碼實現(xiàn)
寫GUI腳本,必須注意兩個重要特性
1:GUI腳本控件必須定義在腳本文件的OnGUI事件函數(shù)中
2:GUI每一幀都會調用
二、常用基本控件使用
GUI基本控件及其含義如下
Label 繪制文本和圖片
TextField 繪制一個單行文本輸入框
TextArea 繪制一個多行文本輸入框
PasswordField 繪制一個密碼輸入框
Button 繪制一個按鈕
ToolBar 創(chuàng)建工具欄
ToolTip 用于顯示提示信息
Toggle 繪制一個開關按鈕
Box 繪制一個圖形框
ScrollView 繪制一個滾動視圖組件
Color 渲染GUI顏色
Slider 包含水平和垂直滾動條
DragWindow 用于實現(xiàn)屏幕內的可拖曳窗口
Window 窗口組件 在窗口中可以添加任意組件
下面使用GUI基本控件實現(xiàn)一個建議的用戶登錄界面
效果如下 點擊上方按鈕可以進行顏色的切換
?
?
?部分代碼如下
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Test_16_8 : MonoBehaviour
{
private string userName = "";
private string password = "";
private string info = "";
private bool manSex = false;
private bool womanSex = false;
Vector2 scrollPosition = Vector2.zero;
int toolbarInt = 0;
string[] toolbarStrings = { "紅色", "綠色", "藍色" };
void OnGUI()
{
//Box組件 下面的內容放到Box組件里面
GUI.Box(new Rect(290, 260, 300, 300), "");
//Toolbar組件創(chuàng)建工具欄
toolbarInt = GUI.Toolbar(new Rect(310, 270, 250, 30), toolbarInt, toolbarStrings);
switch (toolbarInt)
{
case 0:
GUI.color = Color.red;
break;
case 1:
GUI.color = Color.green;
break;
case 2:
GUI.color = Color.blue;
break;
default:
break;
}
//Label組件繪制文本
GUI.Label(new Rect(310, 310, 70, 20), new GUIContent("用戶名:", "Label組件"));
//TextArea組件繪制輸入框
userName = GUI.TextField(new Rect(380, 310, 200, 20), userName);
GUI.Label(new Rect(310, 330, 70, 20), new GUIContent("密碼:", "Label組件"));
//PasswordField組件繪制密碼輸入框
password = GUI.PasswordField(new Rect(380, 330, 200, 20), password, '*');
//Toggle組件繪制開關按鈕
manSex = GUI.Toggle(new Rect(310, 370, 50, 20), manSex, "男");
womanSex = GUI.Toggle(new Rect(350, 370, 50, 20), womanSex, "女");
GUI.Label(new Rect(310, 420, 70, 20), new GUIContent("個人簡介:", "Label組件"));
//ScrollView組件
scrollPosition = GUI.BeginScrollView(new Rect(380, 420, 200, 100), scrollPosition, new Rect(0, 0, 200, 300));
info = GUI.TextArea(new Rect(0, 0, 200, 300), info);
GUI.EndScrollView();
//Button繪制按鈕
GUI.Button(new Rect(400, 530, 50, 20), new GUIContent("保存", "Button組件"));
//ToolTip用戶顯示提示信息
GUI.Label(new Rect(480, 530, 200, 40), GUI.tooltip);
//Window組件和DragWindow組件
Rect windowRect0 = new Rect(300, 600, 120, 50);
Rect windowRectwRect1, DoMyWindow, "Green Window");
}
private void DoMyWindow(int id)
{
if (GUI.Button(new Rect(10, 20, 100, 20), "可拖動窗口"))
{
Debug.Log("color" + GUI.color);
}
GUI.DragWindow(new Rect(0, 0, 10000, 10000));
}
}
三、GUILayout自動布局
使用GUILayout自動布局,讓每個組件的寬度和高度按照一些字體的大小進行統(tǒng)一計算,采取靠左對齊或者靠右對齊,一個空間占據(jù)一行的原則進行布局
下面使用默認Rect定位方式排列Label
代碼如下
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Test_16_9 : MonoBehaviour
{
void OnGUI()
{
GUI.Label(new Rect(0, 0, 70, 20), "你好");
GUI.Label(new Rect(0, 20, 70, 20), "世界");
GUI.Label(new Rect(0, 40, 70, 20), "Hello");
GUI.Label(new Rect(0, 60, 70, 20), "World");
}
}
這時輸出文字都是靠左對齊 不夠美觀
下面使用GUILayout進行自動布局
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Test_16_10 : MonoBehaviour
{
void OnGUI()
{
GUILayout.BeginArea(new Rect(400, 200, 300, 400));
GUILayout.Label("你好");
GUILayout.Label("世界");
GUILayout.Label("Hello");
GUILayout.Label("World");
GUILayout.EndArea();
}
}
這時輸出文字會居中對齊 更加美觀文章來源:http://www.zghlxwxcb.cn/news/detail-695279.html
創(chuàng)作不易 覺得有幫助請點贊關注收藏~~~文章來源地址http://www.zghlxwxcb.cn/news/detail-695279.html
到了這里,關于【Unity 3D】圖形界面GUI的講解及在C#中實現(xiàn)用戶登錄界面的實戰(zhàn)(附源碼)的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!