日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

unity3D游戏开发之GUI

發布時間:2023/12/15 综合教程 29 生活家
生活随笔 收集整理的這篇文章主要介紹了 unity3D游戏开发之GUI 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

轉:http://blog.csdn.net/kuloveyouwei/article/details/23598171

GUI在游戲的開發中占有重要的地位,游戲的GUI是否友好,使用是否方便,很大程度上決定了玩家的游戲體驗。Unity內置了一套完整地GUI系統,提供了從布局、控件到皮膚的一整套GUI解決方案,可以做出各種風格和樣式的GUI界面。在Unity中使用GUI來完成GUI的繪制工作,目前Unity沒有提供內置的GUI可視化編輯器,因此GUI界面的制作需要全部通過編寫腳本代碼來實現,如果游戲有比較多的界面制作需求,可以通過編寫編輯器腳本來制作適合自身需求的GUI編輯器,或者借助第三方的GUI插件,如NGUI。

Unity的GUI類提供了豐富的界面控件,可以將這些控件配合使用,GUI控件,如下圖:

GUI代碼需要在OnGUI函數中調用才能繪制,GUI的控件一般都需要傳人Rect參數來指定屏幕繪制區域,例如Rect(0,10,200,300),對應的屏幕矩形區域左上角的坐標為(0,10),寬度為200,高度為300,在Unity GUI中,屏幕坐標系以左上角為原點

接下來我們看Label控件,Label控件適合用來顯示文本信息或者圖片,我們新建一個c#腳本,叫做TestGUI.cs,然后綁定到我們的Main Camera對象上,Label初始化代碼如下:

[csharp]view plaincopy

voidOnGUI()
{
//GUI.color=Color.red;

GUI.Label(newRect(10,10,100,200),"HelloWorld!");

GUI.Label(newRect(100,100,texture.width/4,texture.height/4),texture);

}

我們定于了兩個label,一個顯示文字,另一個顯示了一張圖片,如下圖:

Box控件,Box控件用來繪制帶有邊框背景的文字或圖片,代碼如下:

[csharp]view plaincopy

voidOnGUI()
{
//GUI.color=Color.red;

//GUI.Label(newRect(10,10,100,200),"HelloWorld!");

//GUI.Label(newRect(100,100,texture.width/4,texture.height/4),texture);

GUI.Box(newRect(10,10,Screen.width*0.5f,Screen.height*0.5f),"Thisisatitle");

GUI.Box(newRect(150,170,texture.width/4,texture.height/4),texture);


}


效果如下:

Button控件,Button控件用來繪制響應單擊事件的按鈕,代碼如下:

[csharp]view plaincopy

GUI.Button(newRect(10,10,150,50),"這是一個文字按鈕");
//圖片按鈕
GUI.Button(newRect(150,100,texture.width/4,texture.height/4),texture);

效果如下圖:

繪制一個文字圖片的按鈕,代碼如下:

[csharp]view plaincopy

//繪制一個帶圖片和文字按鈕
GUIContentguic=newGUIContent("按鈕",texture);
GUI.Button(newRect(10,70,150,30),guic);


我們可以設置按鈕的點擊事件,代碼如下:

[csharp]view plaincopy

GUI.Button(newRect(10,10,150,50),"這是一個文字按鈕");
//圖片按鈕
if(GUI.Button(newRect(150,100,texture.width/4,texture.height/4),texture))
{
Debug.Log("--------aaa");


}

//繪制一個帶圖片和文字按鈕
GUIContentguic=newGUIContent("按鈕",texture);
GUI.Button(newRect(10,70,150,30),guic);

當我們點擊了按鈕,就會在控制臺輸出打印的內容,

TextField控件,在游戲中,經常需要用到信息輸入的窗口,比如聊天窗、用戶信息的輸入等;PasswordField控件用于繪制密碼輸入框,經常用于用戶登錄界面中;TextArea控件與TextField的用法類似,區別就是TextField是單行的,TextArea可以編輯多行的文字,創建的代碼如下:

[csharp]view plaincopy

usingUnityEngine;
usingSystem.Collections;

publicclassTestGUI:MonoBehaviour{


publicTexture2Dtexture;

publicstringuserName;
publicstringpassword;

publicboolisSuccess;


//Usethisforinitialization
voidStart()
{

userName="admin";

password="123";

}

//Updateiscalledonceperframe
voidUpdate(){

}


voidOnGUI()
{
//GUI.color=Color.red;

//GUI.Label(newRect(10,10,100,200),"HelloWorld!");

//GUI.Label(newRect(100,100,texture.width/4,texture.height/4),texture);

//GUI.Box(newRect(10,10,Screen.width*0.5f,Screen.height*0.5f),"Thisisatitle");

//GUI.Box(newRect(150,170,texture.width/4,texture.height/4),texture);



//GUI.Button(newRect(10,10,150,50),"這是一個文字按鈕");
////圖片按鈕
//if(GUI.Button(newRect(150,100,texture.width/4,texture.height/4),texture))
//{
//Debug.Log("--------aaa");
//
//
//}
//
////繪制一個帶圖片和文字按鈕
//GUIContentguic=newGUIContent("按鈕",texture);
//GUI.Button(newRect(10,70,150,30),guic);


userName=GUI.TextField(newRect(10,10,150,30),userName);

//'*'密碼字符串的掩碼字符
password=GUI.PasswordField(newRect(10,50,150,30),password,'*',25);

GUI.TextArea(newRect(10,100,150,50),"abcderfasdasdasdasfasdaasdfdfsfsd");


if(GUI.Button(newRect(Screen.width/2-50,Screen.height/2-50,100,100),"登錄"))
{

//判斷登錄
if(userName.Equals("admin")&&password.Equals("123"))
{

isSuccess=true;

}
else
{

isSuccess=false;

}

}

if(isSuccess)
{



GUI.Label(newRect(10,200,100,30),"登錄成功!");

}else
{

GUI.Label(newRect(10,200,100,30),"登錄失敗!");

}



}



}

效果如下:

Toggle控件可以用于制作開關按鈕,每次單擊,它都會在開和關的狀態之間切換,創建代碼如下:

[csharp]view plaincopy

//文字
toggleTxt=GUI.Toggle(newRect(10,10,100,30),toggleTxt,"AToggletext");
//圖片
toggleImg=GUI.Toggle(newRect(10,50,50,50),toggleImg,texture);

效果如下圖:

ToolBar控件適用于繪制一組按鈕,在這些按鈕中同時只激活一個,可以用來制作工具欄,創建代碼如下:

[csharp]view plaincopy

publicinttoolbarInt;

toolbarInt=GUI.Toolbar(newRect(10,10,250,30),toolbarInt,newstring[]{"功能一","功能二","功能三"
});

效果如下圖:

Silder滑動條是一種很常用的界面元素,可用在音量調整、進度顯示、數值調整的GUI界面中,在Unity中Slider控件分為水平和垂直2種,對應的GUI函數為HorizontalSlider和VerticalSlider,創建代碼如下:

[csharp]view plaincopy

hSliderValue=GUI.HorizontalSlider(newRect(50,25,100,30),hSliderValue,0.0f,10.0f);

//顯示水平滑動條數值
GUI.Label(newRect(25,22,100,30),hSliderValue.ToString("0.00"));

vSliderVaule=GUI.VerticalSlider(newRect(25,70,30,100),vSliderVaule,0.0f,10.0f);

//顯示垂直滑動條數值
GUI.Label(newRect(22,170,100,30),vSliderVaule.ToString("0.00"));

效果如下圖:

Scrollbar控件,滾動條Scrollbar常用于頁面區域的滾動,例如文檔瀏覽中,在Unity中Scrollbar控件分為水平和垂直2種,對應的GUI函數為HorizontalScrollbar和VerticalScrollbar,創建代碼如下:

[csharp]view plaincopy

hSbarValue=GUI.HorizontalScrollbar(newRect(25,25,100,30),hSbarValue,1.0f,0.0f,10.0f);

vSbarVaule=GUI.VerticalScrollbar(newRect(25,50,30,100),vSbarVaule,1.0f,10.0f,0.0f);

效果如下圖:

Unity默認的控件外觀十分簡單,在游戲開發過程中,開發者都會根據游戲的類型和內容來設計一套個性化的游戲界面,Unity可以通過配置GUISkin來更改控件的默認樣式,制作出符合游戲風格的控件外觀。依次打開菜單欄中的Assets->Create->GUI Skin來創建GUISkin,如下圖:

單擊GUISkin文件,在Inspector視圖中可以對GUISkin的參數進行設置,假設現在需要更換按鈕的背景圖片,以及按鈕上的字體大小等,單擊Button折疊項,展開Button控件的樣式參數,更改Normal、Hover、Active、On Normal、On Hover、On Hover、Font Size這幾個參數,如下圖:

然后我們在代碼中創建一個button,代碼如下:

[csharp]view plaincopy

publicGUISkinmySkin;

GUI.skin=mySkin;

GUI.Button(newRect(60,50,588/2,288/2),"開始游戲");


設置mySkin為我們剛才創建的GUISkin,綁定,點擊后的效果如下圖:

GUILayout自動布局,在Unity中GUI控件的布局方式有兩種,一種為固定布局,即在繪制控件的時候將位置參數傳人,指定控件的精確位置;另外Unity還支持控件的自動布局,自動布局適用于控件數量動態的情況,或者是有時候開發者不太在乎控件的精準位置,如果想使用自動布局,那么需要使用GUILayout類來代替前面使用的GUI類,并且去掉Rect()位置參數。

[csharp]view plaincopy

//自動布局
GUILayout.Button("aaaaaaa");

總結

以上是生活随笔為你收集整理的unity3D游戏开发之GUI的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。