【虛幻5】虛幻UMG(UI界面)學(xué)習(xí)筆記(一)

一、創(chuàng)建界面藍(lán)圖

1.1基礎(chǔ)知識(shí)

虛幻UMG即是類似Unity的UGUI的界面布局設(shè)計(jì)工具,其在虛幻引擎中也是屬于藍(lán)圖,但創(chuàng)建入口并不在【藍(lán)圖】菜單中,而是在【用戶界面】中。
創(chuàng)建的UI界面稱之為“控件藍(lán)圖”。

1.2如何創(chuàng)建一個(gè)UI界面

創(chuàng)建流程

在虛幻內(nèi)容瀏覽器中點(diǎn)擊左上角的【+添加】,并在彈出的菜單中選擇【用戶界面】,然后在打開的二級(jí)菜單中選擇【控件藍(lán)圖】。


圖片.png

圖片.png

然后在如上圖所示的界面中,點(diǎn)擊【用戶控件】即可創(chuàng)建一個(gè)界面控件藍(lán)圖。然后根據(jù)你或者項(xiàng)目的需求,修改該控件藍(lán)圖的名字。

雙擊該控件藍(lán)圖會(huì)打開控件藍(lán)圖編輯器界面。具體編輯器布局說(shuō)明不再贅述,請(qǐng)參考虛幻官方文檔

二、層級(jí)(控件樹)

控件藍(lán)圖編輯器左下角的層級(jí),顯示了這個(gè)界面所有控件的樹狀父子關(guān)系結(jié)構(gòu)。有別于Unity和Cocos的UI的層級(jí)關(guān)系結(jié)構(gòu),虛幻的控件子控件數(shù)量,根據(jù)父控件的類型,做了嚴(yán)格的數(shù)量限制。

有些控件不允許有子控件,有些控件允許1個(gè)子控件,有些則允許多個(gè)子控件。

在此對(duì)所有的控件子對(duì)象數(shù)量進(jìn)行了歸納和總結(jié)。

控件名稱 類別 子項(xiàng)數(shù)量
列出試圖 列表 只接受繼承了IUserObjectListEntry接口的控件藍(lán)圖
樹視圖 列表 只接受繼承了IUserObjectListEntry接口的控件藍(lán)圖
瓦片視圖 列表 只接受繼承了IUserObjectListEntry接口的控件藍(lán)圖
安全區(qū) 面板 1個(gè)
包裹框 面板 很多
尺寸框 面板 1個(gè)
垂直框 面板 很多
堆棧框 面板 很多
覆層 面板 很多
滾動(dòng)框 面板 很多
畫布面板 面板 很多
控件切換器 面板 很多
水平框 面板 很多
縮放框 面板 1個(gè)
統(tǒng)一網(wǎng)格面板 面板 很多
網(wǎng)格面板 面板 很多
可編輯文本 輸入
可編輯文本(多行) 輸入
文本框 輸入
文本框(多行) 輸入
旋轉(zhuǎn)框 輸入
組合框(鍵) 輸入
組合框(字符串) 輸入
背景模糊 特殊效果 1個(gè)
按鈕 通用 1個(gè)
邊界 通用 1個(gè)
多格式文本塊 通用
勾選框 通用 1個(gè)
滑條 通用
進(jìn)度條 通用
徑向滑條 通用
命名的插槽 通用
圖像 通用
文本 通用

三、插槽Slot類型

插槽是UMG的最重要布局屬性,其決定了該控件在父控件下的錨定參數(shù)。

當(dāng)你在一個(gè)控件下添加了子控件時(shí),該子控件的細(xì)節(jié)面板第一個(gè)類別就是【插槽】


插槽參數(shù)

插槽是父控件賦予給子控件的屬性,因此在細(xì)節(jié)類別標(biāo)題插槽文字后,會(huì)以括號(hào)的形式標(biāo)注插槽類型。

基于父控件的不同,插槽所展示出的參數(shù)也不一樣。畫布面板下的子控件插槽參數(shù)最自由。其他一些面板的子控件則只能設(shè)置是否填充和對(duì)齊模式。

UMG的插槽Solt,類似Unity中GameObject的Transform

3.1畫布面板槽(Canvas Panel Slot)-自由插槽

圖片.png

3.1.1錨點(diǎn)

圖片.png

錨點(diǎn)決定了子控件在父控件下的對(duì)齊規(guī)則。通常直接點(diǎn)擊【錨點(diǎn)】的下拉菜單,在彈出的九宮格視圖中,按需選擇預(yù)置的錨定即可。

選擇紅框中的錨點(diǎn)類型時(shí),為非填充模式。而綠色框中的為填充模式。不同的模式將影響3.2位置和尺寸中給出的參數(shù)類型。

九宮格下方的描述說(shuō)明:

  • 長(zhǎng)按Shift更新對(duì)齊進(jìn)行匹配:會(huì)根據(jù)所選擇的錨點(diǎn),改變子控件的對(duì)齊中心點(diǎn)位置,但不會(huì)把子控件和錨點(diǎn)的位置XY進(jìn)行重置。
  • 長(zhǎng)按Ctrl更新位置進(jìn)行匹配:此時(shí)會(huì)根據(jù)所選擇的錨點(diǎn),改變子控件的位置,將子控件和錨點(diǎn)的位置XY重置為0。

3.1.2錨點(diǎn)修飾字段

圖片.png

圖片.png

圖片.png

基于用戶在錨點(diǎn)部分選擇的錨定方式,錨點(diǎn)下方的修飾字段展示的參數(shù)類型分為:
① 位置Position+尺寸Size
② 偏移值Offset
③ 位置+尺寸+偏移值

當(dāng)用戶錨點(diǎn)選擇紅框中的錨定模式時(shí),修飾字段為位置和尺寸。當(dāng)選擇紅框中的錨定模式,則根據(jù)填充模式顯示偏移值參數(shù)。

3.1.3對(duì)齊

圖片.png

對(duì)齊即是控件自身的中心點(diǎn)(Pivot),默認(rèn)為{0,0}位置,控件會(huì)以該點(diǎn)作為自己的錨定中心點(diǎn),去對(duì)齊錨點(diǎn)位置。


坐標(biāo)系示意圖

上圖為中心點(diǎn)坐標(biāo)設(shè)置示意圖,在引擎的UMG中多嘗試設(shè)置不同的值進(jìn)行感受。


圖片.png

在UMG的界面中,如上圖所示,紅框圈出的就是控件的錨點(diǎn)位置了。

3.1.4大小到內(nèi)容

圖片.png

勾選此選項(xiàng),則控件的大小不再由“尺寸X”和“尺寸Y”決定。而是由子控件大小,或者自身圖像原始尺寸,或者文本實(shí)際大小來(lái)控制。


未勾選效果

勾選效果

未勾選和勾選的對(duì)比如上圖。

特別注意:如果控件自身設(shè)置為填充模式,則填充模式的尺寸設(shè)置優(yōu)先級(jí)大于“大小到內(nèi)容”的優(yōu)先級(jí)。
如果選擇的是X水平填充模式,則Y值會(huì)受“大小到內(nèi)容”控制,X值不會(huì)。
不要嘗試父控件設(shè)置為“大小到內(nèi)容”,而子控件又設(shè)置為填充模式。這是錯(cuò)誤的用法。

3.1.5 ZOrder

圖片.png

兄弟控件間的層級(jí)關(guān)系,不是一個(gè)絕對(duì)值。當(dāng)兄弟控件處于同一層級(jí),上下關(guān)系會(huì)由控件樹的順序及渲染時(shí)的合批等其他因素決定。
建議不要修改該值來(lái)調(diào)整控件之間的層級(jí)關(guān)系,而是通過(guò)在層級(jí)結(jié)構(gòu)樹中調(diào)整他們的層級(jí)順序。

3.2簡(jiǎn)約插槽

除畫布面板槽以外,還有一種非常參數(shù)非常少的類型


圖片.png

如圖所示,此類簡(jiǎn)約插槽只提供了對(duì)齊模式選項(xiàng)以及邊框填充間距參數(shù)設(shè)置。
填充值是內(nèi)容和邊距之間的間隔。
水平對(duì)齊/垂直對(duì)齊則設(shè)置相對(duì)于父控件的對(duì)齊模式。鼠標(biāo)放到對(duì)應(yīng)的圖標(biāo)上,則會(huì)出現(xiàn)提示文字,告知此圖標(biāo)對(duì)應(yīng)的對(duì)齊模式。
按鈕、邊界、覆層、尺寸框的子控件都是簡(jiǎn)約插槽。

3.3布局插槽

用于讓子項(xiàng)基于水平或垂直方向流式依次排列的一種插槽。在引擎中有垂直框、水平框、堆棧框采用此插槽


圖片.png

垂直框是子控件在父控件空間中按控件樹中的順序垂直排列,水平框是子控件在父控件空間中按控件樹中的順序水平排列。
而堆??騽t是有屬性可以選擇,讓子控件可以水平或垂直排列。


圖片.png

3.3.1尺寸設(shè)置

插槽尺寸選擇有兩種:自動(dòng)和填充

  • 自動(dòng):使用子控件自己的大小,
  • 填充:如果選擇紅框中的3個(gè)對(duì)齊模式,則還是子控件自己的大小,如果選擇綠框中的,則會(huì)拉伸子控件以填滿父控件的的空間。

以垂直框舉例,無(wú)論子控件是自動(dòng)大小還是填充大小,當(dāng)父控件寬度≥子控件寬度時(shí),會(huì)使用子控件的寬度。當(dāng)父控件寬度<子控件寬度時(shí),會(huì)壓扁子控件。


父控件寬度≥子控件寬度時(shí)

父控件寬度<子控件寬度時(shí)

3.3.2布局規(guī)則

布局插槽的布局規(guī)則如下,以垂直框舉例:
1、 水平方向上,子控件獨(dú)占剩余空間。
2、 如果子控件設(shè)置填充值,程序會(huì)扣除填充值,剩余尺寸進(jìn)行排版。
3、 之后再扣除自動(dòng)大小的子控件,剩余尺寸進(jìn)行填充。
4、 最后,所有設(shè)置為填充模式的子控件,根據(jù)填充值后的權(quán)重參數(shù)值統(tǒng)一進(jìn)行歸一化計(jì)算分配比例。


圖片.png
子控件可分配高度=(垂直框總高度-所有子控件填充值-自動(dòng)大小子控件高度)*(填充權(quán)重/(填充權(quán)重1+填充權(quán)重2+..+填充權(quán)重n))
布局效果示例

可見,使用填充模式的子控件,會(huì)根據(jù)權(quán)重值計(jì)算自身可占據(jù)的空間大小。當(dāng)剩余空間大小不足以完全展示子控件時(shí),子控件會(huì)被壓縮尺寸。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容