文章目錄
- 幾個概念
- 創建一個UI藍圖
- 添加UI
- 獲取UI的引用 切換設計器和UI藍圖
- 將UI添加到游戲場景
- 錨點
- 軸點
- slot
- SizeToContent
- 三種UI數據更新方式
- 函數綁定
- 屬性綁定
- 事件綁定
- 九宮格分割圖片
幾個概念
UMG:UE的UI編輯器
slate UI: UE的UI的編輯語言
創建一個UI藍圖
右鍵用戶界面/控件藍圖,選擇UserWidget父類
添加UI
添加UI前先添加一個畫布,拖進場景里或者拖進層級里均可
然后需要什么UI直接往場景里拖就可以,也可以拖到別的UI上成為子級UI
例如先拖一個按鈕,再拖一個text到按鈕上,這樣text自動成為按鈕的子物體
獲取UI的引用 切換設計器和UI藍圖
選中一個UI,勾選右上角是變量
點擊右上角切換到事件圖表
在變量里就可以看到UI
注意變量的名字是這里的名字,而不是層級面板里的名字
將UI添加到游戲場景
在GameModel里,創建UI并添加到游戲
錨點
和Unity的錨點是一樣的,錨點是可以直接拖得
軸點
和untiy的0.5,0.5不同,UE的軸點默認對齊是0,0,位置是UI的左上角
這是軸點為0,0,位置也為0,0的情況,可以看到UI的左上角和錨點對齊
我們把軸點改為0.5,0.5,位置仍然是0,0,現在可以看到UI的中心和錨點對齊
slot
我們創建的按鈕的對齊方式里有一個插槽屬性,后邊顯示為畫布面板槽,這是因為它的父物體是畫布,父物體不同,他們的插槽的可選內容是不同的
這是按鈕下的一個text,它的slot是按鈕槽,而不是畫布槽
SizeToContent
勾選后尺寸屬性失去作用,完全由填充圖片或者子級文本長度來控制大小
三種UI數據更新方式
函數綁定
對于UI中可變更的部分,例如數值,文本,點擊后邊的綁定按鈕,會自動在事件藍圖中創建一個函數,函數的返回值會自動更行到UI上,函數將每幀調用
例如這里調用了一個GethealthPercent的函數,來獲取血量的百分比
函數內部實現,Player是自己創建的變量
屬性綁定
屬性綁定和函數綁定類似,也是每幀調用,區別在于函數綁定是讓UI同步函數的返回值,屬性綁定是讓UI同步屬性字段的值
要求屬性的數據類型必須和UI所需要的值相同
點開綁定,選擇一個屬性
以血量為例,雖然player中有當前血量,但是health的類型是float,不是string,所以不能直接用,我們需要在UI藍圖里新建要給HealthText的屬性,類型為text或string,然后在UI藍圖的tcik事件里每幀轉換數據類型給HealthText,最后再給UI綁定屬性
事件綁定
參考這個
九宮格分割圖片
參考unity的Slice模式的圖片,用于保持背景圖片邊框在拉伸時不會變化
選擇圖片,將他的繪制為由圖像改為盒體,并設置邊緣