
實現(xiàn)效果
分析

- 整個條使用百分比來表示,最大值為1.0,最小值為0。
- 使用插值做平滑效果,所以要用Tick(Widget中不能使用TimeLine)
- 在血量減少的時候使用插值減少實際血量的比值,并同時增加延遲的比值,這樣可以保證實際血量的值+延遲的值是保持不變的。
- 在一定延時后,使用插值處理延遲值的減少,并同時空的值增加,原因同上
- 判斷血量是減少還是增加,如果是減少則使用上述方法,如果是增加的話則延遲的值始終為零,使用插值增加實際血量,同時減少空的值,保證三個比值的總值永遠為1.0
藍圖
實際上,我們有現(xiàn)成的控件,百分比值的控制可以使用【HorizontalBox】Slot中SIze的值(模式為填充)

Slot

如果每次使用都需要Cast的話有點麻煩,我們將其封裝成藍圖宏:

SetSlotValue

GetSlotValue
還有一個稍微復雜的宏,我會著重講解:

將上面血條的三段拆分出來
這個需要實現(xiàn)的宏的主要作用是:保持線段總長不變(ac恒定ab+bc=ac),其中一個線段減少,另一個線段相應增加(ac-(ab-n)=bc+n)。

SetSlotValue_2

將SetSlotValue_2插值化(SetSlotValue2ByInterp)

WidgetIsEnpty
UI

層次結構,那三個子控件都是Border

測試效果

UpdateRealAndLag

UpdateLagAndEnpty

Tick

更新值的接口