RetainerBox是一個容器,只會影響其容器內的UI,RetainerBox的作用:
一、控制UI更新頻率(可能是為有優化性能)
1、在UserWidget中添加Retainer Box容器,並在容器內添加一個名為TextBlock_0的TextBlock。
2、聲明一個名為Counter的變量,在Event Tick事件(每一幀都會被調用)中Counter自加一,並賦值給TextBlock_0
3、運行游戲,會看到數字以極快的速度更新一次。(一般情況下游戲是每秒60幀,一秒會更新60次畫面,每秒調用Event Tick事件,非常耗費資源,因此Event Tick事件不適合做特別耗費資源的邏輯)
4、RetainerBox的Pase和Pase Count控制更新速度。Pase Count:每隔多少幀更新(繪制)一下其容器內的UI
Pase=0,Pase Count=1,在60HZ(HZ刷新率,每秒更新多少幀。UE4默認是60HZ)游戲中,RetainerBox容器內的UI每秒更新60次;
Pase=0,Pase Count=2,在60HZ游戲中,RetainerBox容器內的UI每秒更新30次;
5、把Pase Count改成60,Phase=0保持不變。在60HZ的游戲則會看到TextBlock_0每1秒才更新一下
二、把渲染后的UI當成Texture,放入材質中,加工后(各種特效,比如:漸變、移動、縮放等),再顯示
1、新建一個名為M_TestRetainer的材質,Material Domain改成User Interface,添加一個命名為Texture(需要跟UI的RetainerBox容器的Texture Parameter值一致)的TextureSampleParameter2D節點
2、UI中把RetainerBox_0的Effect Material改成M_TestRetainer,Texture Parameter材質參數保持Texture不變(需要跟TextureSampleParameter2D節點名稱一致)
3、運行游戲,畫面效果如圖所示
4、下面讓材質支持透明通道,並添加線性漸變特效。在M_TestRetainer材質中,Blend Mode改成Translucent,將Param2D節點和M_TestRetainer的透明通道相連接。
5、運行游戲看效果:支持透明通道,並且有線性漸變效果。
6、如果要改成漸變效果從下往上,可以添加一個“1-x(OneMinus)”節點,也就是1減去左邊輸入的參數值,得到的結果從右邊輸出
7、運行游戲,漸變效果變成從下往上了。
8、如果要從左到右漸變,則使用LinearGradient的UGradient節點
9、同樣的,使用“1-x(OneMinus)”節點,可以改成漸變從右到左。
10、使用Panner使材質實現翻滾動畫