[UE4]RetainerBox,控制UI更新頻率,把渲染后的UI當成Texture


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使材質實現翻滾動畫

      

 

 

 

 

 

 

 

    

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM