GUI與GUILayout的區別——《Unity 3D遊戲開發》
GUILayout是什麼東西呢?它是遊戲介面的佈局。從命名中就可以看到這兩個東西非常相像,但是在使用過程中兩者還是存在一定區別的。
使用GUI繪製控制元件的時候,需要設定控制元件的Rect()方法,也就是說需要設定控制元件的整體顯示區域。這樣設定的控制元件非常不靈活,因為它的座標以及大小已經固定死了,這時如果控制元件中的內容長度發生改變,就會直接影響展示效果。例如,在介面中繪製一個按鈕時,按鈕中的顯示文字剛好填充在整個按鈕當中,如果動態加長文字的顯示長度,就會超出按鈕的顯示範圍,使按鈕控制元件變得不倫不類。我們需要製作控制元件的自適應,所以不能使用Rect()方法固定控制元件的顯示區域,而是需要使用介面佈局來製作介面。
使用GUILayout來製作介面,可以很方便地為我們解決上述難題。使用GUI製作介面的時候,需要給每一個控制元件設定顯示區域,如果控制元件的顯示座標沒有計算準確,還會出現控制元件重疊的情況,而GUILayout無須設定顯示區域,系統會自動幫我們計算控制元件的顯示區域,並且保證它們不會重疊。
注意 之前介紹的大部分GUI控制元件都可以使用GUILayout進行繪製。
下面我們將通過一個例項讓讀者進一步熟悉GUI與GUILayout之間的區別。本例使用GUI與GUILayout分別製作兩個按鈕,然後動態修改按鈕中的文字,看看這兩個按鈕有什麼不同的變化,具體程式碼如程式碼清單3-11所示。
程式碼清單3-11 Script_03_11.js檔案
var addStr : String = "新增測試字串";
function OnGUI()
{
//普通GUI按鈕
if(GUI.Button (Rect (50,50,100,30), addStr))
{
addStr +=addStr;
}
//介面佈局按鈕
if(GUILayout.Button (addStr))
{
addStr +=addStr;
}
}
在上述程式碼中,點選任意按鈕,按鈕中的文字長度將增加。如圖3-16所示,正常情況下兩個按鈕中的內容與按鈕的佈局完美適應。
點選按鈕來增加文字內容,效果如圖3-17所示,顯然使用GUILayout繪製的按鈕按照字串長度調整了按鈕長度,而使用GUI繪製的按鈕未能進行自適應調整。由於按鈕中的文字增長,而按鈕的長度不變,所以按鈕上的文字被擠在了中間。由此可以看出,使用GUI繪製的控制元件非常不靈活。
相關文章
- WEB與遊戲開發的一些區別Web遊戲開發
- 《Unity 2D與3D手機遊戲開發實戰》簡介Unity3D遊戲開發
- unity 區域網遊戲開發知識點Unity遊戲開發
- 《Unity 3D 遊戲開發(第2版)》讀後感Unity3D遊戲開發
- 【Unity 3D遊戲開發】在Unity使用NoSQL資料庫方法介紹Unity3D遊戲開發SQL資料庫
- 【Unity遊戲開發】SpriteAtlas與AssetBundle最佳食用方案Unity遊戲開發
- 【Unity3D開發小遊戲】《戰棋小遊戲》Unity開發教程Unity3D遊戲
- Unity遊戲示例來了,用Unity開源遊戲資源做遊戲,遊戲開發不再難!Unity遊戲開發
- 喵的Unity遊戲開發之路 - 推球:遊戲中的物理Unity遊戲開發
- unity3d開發的大型網路遊戲Unity3D遊戲
- 《Unity移動遊戲開發》讀後感Unity遊戲開發
- 17款Unity開發遊戲可以用到的外掛Unity開發遊戲
- 喵的Unity遊戲開發之路 - 軌道攝像機Unity遊戲開發
- 【Unity 框架】 QFramework v1.0 使用指南 工具篇: 16. LiveCodingKit 寫程式碼不用停止執行的利器 | Unity 遊戲框架 | Unity 遊戲開發 | Unity 獨立遊戲Unity框架Framework遊戲開發
- 遊戲開發工具推薦:Unity Pro 2018 for Mac遊戲開發UnityMac
- 區塊鏈宇宙遊戲系統的開發與介紹區塊鏈遊戲
- 區塊鏈遊戲的發展與概念區塊鏈遊戲
- Unity Pro 2018 for Mac(3D遊戲動畫開發工具) v2018.4.31f1啟用版UnityMac3D遊戲動畫
- 3D遊戲鏈遊系統開發(原始碼)3D遊戲原始碼
- 遊戲開發3D基礎知識遊戲開發3D
- 對話遊戲開發平臺Unity高管:疫情下的遊戲產業挑戰與機遇並存遊戲開發Unity產業
- unity遊戲開發雜項系列:unity在商店裡下載的package儲存位置Unity遊戲開發Package
- Unity中國全面支援OpenHarmony遊戲開發,多款遊戲率先完成適配Unity遊戲開發
- 3D遊戲:五、與遊戲世界互動3D遊戲
- 【Unity遊戲開發】不接SDK也能在遊戲內拉起加QQ群操作?Unity遊戲開發
- 前端開發與後端開發的區別是什麼?前端後端
- 遊戲開發與設計遊戲開發
- Demole NFT3D鏈遊系統開發模式(3D遊戲開發)3D模式遊戲開發
- 區塊鏈宇宙遊戲系統的開發區塊鏈遊戲
- 微信開發中 openID 與 unionID 的區別
- 軟體定製開發與SaaS的區別
- 遊戲開發原理——手遊開發團隊與成本遊戲開發
- 在區塊鏈上開發遊戲:鏈遊區塊鏈開發遊戲
- 零基礎瞭解3D遊戲開發3D遊戲開發
- 區塊鏈遊戲NFT遊戲開發DAPP模式定製區塊鏈遊戲開發APP模式
- Unity《ATD》塔防RPG類3D遊戲架構設計(一)Unity3D遊戲架構
- Unity《ATD》塔防RPG類3D遊戲架構設計(二)Unity3D遊戲架構
- 元宇宙區塊鏈遊戲開發的優勢元宇宙區塊鏈遊戲開發
- 遊戲開發商與遊戲發行商如何保持良性關係?遊戲開發