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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

[转]unity3D游戏开发之GUI

發(fā)布時間:2023/12/10 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [转]unity3D游戏开发之GUI 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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

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

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


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

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

void OnGUI() {//GUI.color = Color.red;GUI.Label(new Rect (10, 10, 100, 200), "Hello World!");GUI.Label (new Rect (100, 100, texture.width/4, texture.height/4), texture); }

?


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


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

void OnGUI(){//GUI.color = Color.red;//GUI.Label(new Rect (10, 10, 100, 200), "Hello World!");//GUI.Label (new Rect (100, 100, texture.width/4, texture.height/4), texture);GUI.Box (new Rect (10, 10, Screen.width * 0.5f, Screen.height * 0.5f), "This is a title");GUI.Box (new Rect (150, 170, texture.width/4, texture.height/4), texture);}

?

效果如下:


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

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

?

效果如下圖:


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

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

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

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

?

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

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

using UnityEngine; using System.Collections;public class TestGUI : MonoBehaviour {public Texture2D texture;public string userName;public string password;public bool isSuccess;// Use this for initializationvoid Start () {userName = "admin";password="123";}// Update is called once per framevoid Update () {}void OnGUI(){//GUI.color = Color.red;//GUI.Label(new Rect (10, 10, 100, 200), "Hello World!");//GUI.Label (new Rect (100, 100, texture.width/4, texture.height/4), texture);//GUI.Box (new Rect (10, 10, Screen.width * 0.5f, Screen.height * 0.5f), "This is a title");//GUI.Box (new Rect (150, 170, texture.width/4, texture.height/4), texture);// GUI.Button (new Rect (10, 10, 150, 50), "這是一個文字按鈕"); // //圖片按鈕 // if(GUI.Button (new Rect (150, 100, texture.width/4, texture.height/4), texture)) // { // Debug.Log("--------aaa"); // // // } // // //繪制一個帶圖片和文字按鈕 // GUIContent guic = new GUIContent("按鈕", texture); // GUI.Button(new Rect(10, 70, 150, 30), guic); userName=GUI.TextField (new Rect (10, 10, 150, 30), userName);//'*'密碼字符串的掩碼字符password=GUI.PasswordField (new Rect (10, 50, 150, 30), password, '*', 25);GUI.TextArea(new Rect(10, 100, 150, 50),"abcderfasdasdasdasfasdaasdfdfsfsd");if (GUI.Button (new Rect (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(new Rect(10, 200, 100, 30), "登錄成功!");} else { GUI.Label(new Rect(10, 200, 100, 30), "登錄失敗!");}} }

?

效果如下:


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

//文字toggleTxt = GUI.Toggle (new Rect (10, 10, 100, 30), toggleTxt, "A Toggle text");//圖片toggleImg = GUI.Toggle (new Rect (10, 50, 50, 50), toggleImg, texture);

?

效果如下圖:


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

public int toolbarInt;toolbarInt=GUI.Toolbar(new Rect(10,10,250,30),toolbarInt,new string[]{"功能一","功能二","功能三"});

效果如下圖:


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

hSliderValue = GUI.HorizontalSlider (new Rect (50, 25, 100, 30), hSliderValue, 0.0f, 10.0f); //顯示水平滑動條數值 GUI.Label(new Rect(25,22,100,30),hSliderValue.ToString("0.00"));vSliderVaule = GUI.VerticalSlider (new Rect (25, 70, 30, 100), vSliderVaule, 0.0f, 10.0f);//顯示垂直滑動條數值 GUI.Label(new Rect(22,170,100,30),vSliderVaule.ToString("0.00"));

?

效果如下圖:


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

hSbarValue = GUI.HorizontalScrollbar (new Rect (25, 25, 100, 30), hSbarValue, 1.0f, 0.0f, 10.0f);vSbarVaule = GUI.VerticalScrollbar (new Rect (25, 50, 30, 100), vSbarVaule, 1.0f, 10.0f, 0.0f);

?

效果如下圖:


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


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


然后我們在代碼中創(chuàng)建一個button,代碼如下:

public GUISkin mySkin;GUI.skin = mySkin;GUI.Button (new Rect (60, 50, 588 / 2, 288 / 2), "開始游戲");

?

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


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

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

?

?

轉載于:https://www.cnblogs.com/dad-bod/p/5507641.html

總結

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

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