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

點擊之后出現兩個物體

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

一個默認的Image圖片出現在了游戲框之中

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

2.0 RectTransform組件參數說明
UI的RectTransform組件中涵蓋了位置,旋轉,縮放,錨點等等信息

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

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

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

現在圖片已經顯示出來了:

4.創建一個Button按鈕
右鍵選擇UI中的Button選項

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

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

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

4.1 Button組件參數說明

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


5.1 Text組件的參數說明
上面的text創建出來不明顯,因為我們參數還未開始設置,首先我們來看下Text組件的參數:
Font:字體設置,unity默認字體是Arial。可以從我的電腦中選取其他字體替換,也可以網上下載放在unity中替換。

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

如果為2則字體中間間隔了一個字體size的大小:

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

RaycastTarget:和Image一樣,勾選該選項后,該UI會屏蔽射線,鼠標點擊到這個字體的時候下面如果有按鈕區域將會被中止響應。

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

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

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

背景圖片參數:

添加三個按鈕:

相反的圖片只用修改旋轉值便可以了:

創建一個Text,大小調整好后擺一個喜歡的位置:

最后放上一個CD圖標~

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