簡單的UMG通信方式
有朋友看了我的文章《藍(lán)圖之間通信的幾種常用方式》想知道UI間的參數(shù)傳遞

既然發(fā)問了,那我就來回答一下:
UE4的UI(Unreal Motion Graphics UI Designer )簡稱UMG也是藍(lán)圖的一種,因此它的通信方式也符合藍(lán)圖之間的通信方式,不過會(huì)有一些變化。

創(chuàng)建和直接傳遞
如果我們想在創(chuàng)建某個(gè)UI時(shí)候就傳遞一些變量,可以使用這種方式。

我們來到UI的圖表視圖,在變量下創(chuàng)建變量,選擇生成時(shí)公開,那么這個(gè)變量將在UI創(chuàng)建的時(shí)候暴露出來。(控件變量無此選項(xiàng))

這個(gè)時(shí)候我們就能在創(chuàng)建UI時(shí)候?qū)⒆兞總鬟f給UI。

2.UI嵌套
如果UI里的控件數(shù)量、類型比較多,例如:玩家UI有:玩家狀態(tài),玩家屬性等,這時(shí)候我們可以封裝一個(gè)功能的UI,然后作為整體放在玩家UI。另外,設(shè)計(jì)者希望有些組合的控件可以重復(fù)利用,也會(huì)封裝到一起。
在玩家UI里控制板的用戶創(chuàng)建下可以找到自己創(chuàng)建的其他UI,拖拽到下方的層級(jí)里就實(shí)現(xiàn)了UI嵌套。在變量里就可以獲取這些UI的參數(shù)信息。


UI可以嵌套很多層,例如玩家狀態(tài)UI嵌套在玩家UI,玩家UI嵌套在主UI,這種通信是單向的,上級(jí)UI可以獲取下級(jí)UI的信息,但下級(jí)UI不能獲取上級(jí)UI的信息。
3.從類獲取所有控件
和生成actor類似,從類獲取控件是找到這類UI

這種方式可以從下級(jí)UI獲取上級(jí)UI的信息,但將會(huì)和文件形成依賴,一般不推薦這種設(shè)計(jì)。

4.使用接口解耦
通過創(chuàng)建接口函數(shù)來解決文件間的相互依賴,有利于功能管理和擴(kuò)展





UI方便的參數(shù)引用
在UMG的設(shè)計(jì)界面選擇控件,在它的細(xì)節(jié)面板常常能看到這些綁定按鈕,綁定按鈕可以很方便的選取自己創(chuàng)建的變量,并且在運(yùn)行中會(huì)實(shí)時(shí)更新這些變量。也可以綁定函數(shù),這些函數(shù)也是在運(yùn)行中實(shí)時(shí)更新的。


UMG間的幾個(gè)簡單通信方式就總結(jié)到這里,這些方式需要靈活運(yùn)用,希望能幫到那位朋友和有需要的人。