分析
- 整个条使用百分比来表示,最大值为1.0,最小值为0。
- 使用插值做平滑效果,所以要用Tick(Widget中不能使用TimeLine)
- 在血量减少的时候使用插值减少实际血量的比值,并同时增加延迟的比值,这样可以保证实际血量的值+延迟的值是保持不变的。
- 在一定延时后,使用插值处理延迟值的减少,并同时空的值增加,原因同上
- 判断血量是减少还是增加,如果是减少则使用上述方法,如果是增加的话则延迟的值始终为零,使用插值增加实际血量,同时减少空的值,保证三个比值的总值永远为1.0
蓝图
实际上,我们有现成的控件,百分比值的控制可以使用【HorizontalBox】Slot中SIze的值(模式为填充)
Slot
如果每次使用都需要Cast的话有点麻烦,我们将其封装成蓝图宏:
SetSlotValue
GetSlotValue
还有一个稍微复杂的宏,我会着重讲解:
将上面血条的三段拆分出来
这个需要实现的宏的主要作用是:保持线段总长不变(ac恒定ab+bc=ac),其中一个线段减少,另一个线段相应增加(ac-(ab-n)=bc+n)。
SetSlotValue_2
将SetSlotValue_2插值化(SetSlotValue2ByInterp) WidgetIsEnpty
UI
层次结构,那三个子控件都是Border测试效果
UpdateRealAndLag
UpdateLagAndEnpty
Tick
更新值的接口
网友评论