【Unity】UGUI系列教程——拼接一個簡單界面

經(jīng)過一個月的申(tuo)請(ta),咱們也開通了B站的專欄!
接下來會不定期更新各種各樣的游戲開發(fā)技巧、項目實戰(zhàn)演練、技術(shù)評析等等等等,全是有營養(yǎng)的干貨。今天首先帶來的是UI系列的第一篇。來吧,勇于創(chuàng)造世界的少年們!

0.簡介:
在目前的游戲市場上,手游依然是市場上的主力軍,而只有快速上線,玩法系統(tǒng)完善的游戲才能在國內(nèi)市場中占據(jù)份額。而在手游開發(fā)過程中,搭建UI系統(tǒng)是非?;厩抑匾募寄?,極端的說如果對Unity的UI系統(tǒng)熟悉,就可以去游戲公司上班了 :)(笑~)。
但是就像蛋炒飯,最簡單的事要做好也是非常困難的。UI這塊的變動也經(jīng)常是整個游戲最頻繁的一塊,如果沒有一個合理的設(shè)計思路,和管理方案,后期將會陷入無止境的調(diào)試優(yōu)化之中。
萬丈高樓平地起,現(xiàn)在讓我們開始從Unity中的UGUI系統(tǒng)進行講解。
1.創(chuàng)建一個UI畫布
直接新建場景,右鍵Hierarchy窗口,選擇UI選項,點擊列表中出現(xiàn)的Canvas(畫布)選項

點擊之后出現(xiàn)兩個物體

Canvas:UI的畫布,我們的UI圖片都會在這下面渲染。
EventSystem:UI的事件系統(tǒng),很多新手都會選擇遺忘掉這個組件,結(jié)果后來做了一個按鈕出來不能點擊,原因就是這個物體被誤刪了。
2.創(chuàng)建一個Image組件
在Canvas上右鍵,選擇UI選項中的Image選項

一個默認的Image圖片出現(xiàn)在了游戲框之中

注意:UI的圖片只會在Canvas下才能看得見,這里我將Image移除了Cansvas,鏡頭內(nèi)的圖片消失了

2.0 RectTransform組件參數(shù)說明
UI的RectTransform組件中涵蓋了位置,旋轉(zhuǎn),縮放,錨點等等信息

Width和Height:一般UI里面放大和縮小圖片的寬度和高度都是通過這里來控制的,而不是直接調(diào)整縮放值
Anchors:錨點位置,屏幕的寬高變化時要讓UI依然能按照預(yù)想的正常顯示,就需要通過錨點來定位。具體見后續(xù)文章中的屏幕自適應(yīng)部分內(nèi)容。
Pivot:中心點,該屬性定義圖片的中心點位置,(0.5,0.5)改好為圖片中心。若我們想左右拉長一個橫條,想讓它只在右邊增長,修改中心店位置(0,0.5),中心點位在最左邊,調(diào)整Width就會只看到橫條在右方向的長度變化。
2.1 Image組件的參數(shù)說明
Unity大多用于圖片顯示的UI組件都會有基礎(chǔ)的Image組件

SourceImage:該UI顯示的圖片資源,注意這里只能支持Sprite類型的圖片,后面會介紹Sprite類型的圖片怎么設(shè)置。
Color:修改該圖片的顏色。
Material: Unity支持自定義圖片材質(zhì)來實現(xiàn)復(fù)雜的效果,不填的話默認只用unity已經(jīng)設(shè)置好的UI材質(zhì)效果。在游戲設(shè)計中幾乎不會修改這里的內(nèi)容。
RaycastTarget: 勾選該選項后,該UI將會響應(yīng)射線點擊,鼠標點擊到這個UI物體的時候事件管理器知道我們點擊了什么物體,這個參數(shù)會和Button組件配合,完成我們的點擊操作。
3.創(chuàng)建一個UI圖片
導(dǎo)入一張圖片,選擇TextureType的類型為Sprite(2D and UI)后,點擊Apply。這時Unity會修改圖片為Sprite類型的圖片,只有這種類型才能放入Image組件中。TextureType的其他參數(shù)會放在之后的UI圖集知識點中說明。

直接將圖片拖入Image的SourceImage中,圖片便渲染出來了,此時圖片采用的像素是100X100的像素,只用點擊Image新出來的按鈕就可以設(shè)置為圖片本身的像素尺寸。

現(xiàn)在圖片已經(jīng)顯示出來了:

4.創(chuàng)建一個Button按鈕
右鍵選擇UI中的Button選項

創(chuàng)建出來的Button只有Button和Text兩個物體,Text是unity的文字顯示組件,Button的功能本身和Text沒有任何關(guān)聯(lián),因此這里可以將Text刪除掉(Unity將Text和button一起創(chuàng)建主要是因為按鈕帶文字更加常見)

Button物體上只有兩個組件,一個組件是之前介紹過的Image組件,一個是按鈕功能相關(guān)的Button組件。我們導(dǎo)入一張新的圖進入工程,改變圖片格式成Sprite格式后拖到Image上,然后點擊SetNativeSize按鈕修改RectTransform中的寬度高度和原圖片相同。

按鈕UI顯示了出來,運行游戲,點擊這個按鈕會發(fā)現(xiàn)UI顏色會變化,說明按鈕功能生效了。

4.1 Button組件參數(shù)說明

Interactable:是否開啟按鈕交互,若取消則按鈕會變成DisabledColor選擇的顏色,此時按鈕不會響應(yīng)點擊操作。
TargetGraphic:Button組件綁定的Image組件,注意如果該項為空按鈕點擊事件將會失效,同時是有按鈕綁定的Image組件勾選了RaycastTarget參數(shù)才能有點擊效果。
Transition:按鈕的點擊效果類型,unity自帶了3種類型,分別為Color
Tint(顏色變化),Sprite Swap(圖片切換),Animation (動畫變化)。不同類型對應(yīng)的Normal XXX,Highlighted XXX,Pressed XXX,Disabled XXX,分別為按鈕不點擊時效果、鼠標移動到按鈕時效果、點擊時效果和未激活時效果。
OnClick(): 點擊事件,可以關(guān)聯(lián)點擊按鈕后的行為至我們自己寫的代碼中。后續(xù)的文章會繼續(xù)講解UGUI的事件處理
5.創(chuàng)建一個Text文本框
右鍵Canvas,選擇UI中的Text組件


5.1 Text組件的參數(shù)說明
上面的text創(chuàng)建出來不明顯,因為我們參數(shù)還未開始設(shè)置,首先我們來看下Text組件的參數(shù):
Font:字體設(shè)置,unity默認字體是Arial??梢詮奈业碾娔X中選取其他字體替換,也可以網(wǎng)上下載放在unity中替換。

FontStyle:字體的加粗,傾斜等設(shè)置。
FontSize: 字體大小設(shè)置,這里注意字體設(shè)置如果過大,超過了RectTransform設(shè)置的寬度或高度將不會顯示字體(很多時候美術(shù)PS中的字體大小和unity的字體大小有區(qū)別的,應(yīng)該統(tǒng)一用像素大小來統(tǒng)一)。
LineSpacing:行間距,這個參數(shù)unity介紹的不清楚。其實他間隔的是你當(dāng)前字體大小的倍數(shù)。
如果為1為以下效果:

如果為2則字體中間間隔了一個字體size的大?。?/p>
RichText:富文本選項,該選項如果勾選,可以通過加入顏色命令字符來修改字體顏色(例:<color=#525252>變色的內(nèi)容</color>)。游戲的公告的編輯就需要該功能。
Paragraph:
Alignment為設(shè)置文件上下左右居中等對齊效果
AlignByGeometry為幾何對齊,圖文混排的時候需要該功能配合
HorizontalOverflow和VerticalOverflow分別為水平和豎直換行,如果Wrap和Truncate選項,內(nèi)容將會束縛在設(shè)置定寬度高度之內(nèi),如果選項為Overflow內(nèi)容將會超出設(shè)定的邊界。
BestFit:勾選這個選項,字體將會以RectTransform的寬度高度邊界,動態(tài)修改字體大小讓所有內(nèi)容剛好填充滿這個框。
Color:字體顏色,若用了富文本修改顏色,則不會改變用到了富文本的字體顏色。

RaycastTarget:和Image一樣,勾選該選項后,該UI會屏蔽射線,鼠標點擊到這個字體的時候下面如果有按鈕區(qū)域?qū)恢兄鬼憫?yīng)。

6.簡單處理UI的遮擋關(guān)系
UGUI中的層級是根據(jù)Hierarchy中,物體的上下關(guān)系來決定的。
Button在Image的下面,所以游戲窗口中button遮擋了Image

若Image在button下面,Image將會遮擋button

7.創(chuàng)建一個界面
利用Image、Button和Text組件已經(jīng)可以實現(xiàn)許多功能界面了,接下來用剛才講到的內(nèi)容拼接一個簡單的音樂播放界面出來。
簡單創(chuàng)建一個純色的背景,暫定為灰黑色,寬度高度設(shè)置成屏幕的寬度高度分辨率,屏幕分辨率可以在Game窗口下設(shè)置。

背景圖片參數(shù):

添加三個按鈕:

相反的圖片只用修改旋轉(zhuǎn)值便可以了:

創(chuàng)建一個Text,大小調(diào)整好后擺一個喜歡的位置:

最后放上一個CD圖標~

整體界面完成:
注意我們應(yīng)該注重層級窗口中,對GameObject的命名格式規(guī)范,這樣我們便于在之后復(fù)雜的界面中去查找和修改我們的組件。

下節(jié)預(yù)告:
下一節(jié)會針對UI的事件進行講解,了解完后就能開始添加按鈕功能,點擊按鈕完成界面變化和腳本功能的響應(yīng)。
對游戲開發(fā)感興趣的同學(xué),歡迎圍觀我們:【皮皮關(guān)游戲開發(fā)教育】 線下教育自不必說,還會定期更新各種教程,干貨。在你學(xué)習(xí)進步的路上,有皮皮關(guān)陪你!~
我們的官網(wǎng)地址:http://levelpp.com/
我們的游戲開發(fā)技術(shù)交流群:610475807
我們的微信公眾號:levelpp