需求:
游戏开始后根据配置好的游戏时间倒计时,游戏开始倒计时开始倒计时结束游戏结束。
资料参考:
UE4蓝图实现倒计时功能_ue4蓝图 几点钟执行-优快云博客
过程:
1、新建一个settimerbyevent定序器
该定序器可以设置一个规定的时间来循环函数或方法。
Time设置的是调用的时间间隔;Looping勾选代表无线循环,不勾选代表调用一次。
注意:这里调用要放在Construct构造函数里不能放在Tick里,放在Tick里运行后时间不变
2、新建两个int类变量,分别代表分和秒
3、逻辑关系:
分和秒=0的情况下代表倒计时结束不跑,其他代表有倒计时
当分≠0,秒=0的情况下,代表整数倒计时的时间,下一秒设置从59开始,然后分-1;
当秒≠0的情况下,秒-1
4、UMG蓝图中显示两个TEXT
并设置绑定函数
函数里显示如果<9前面+0;如果大于9两位数则正常显示
问题:
运行的时候出现另一个问题,由于涉及到多个控件蓝图,在多个控件蓝图中都调用了一套顶部的控件蓝图,但每个界面切换的时候时间都从头计时。因为每个控件蓝图在切换的时候都是卸载掉然后重新生成create出来的,因此时间也被重新加载。
如果采用另一种办法,即新建一个控件蓝图只显示倒计时的时间,同时加载两个Widget,一个负责倒计时,一个负责控件蓝图的显示。随之而来的问题是,卸载切换负责显示的控件蓝图,倒计时的widget被叠在后面,切换后就不显示了/
过程:
解决办法:
1、将fen和miao设置在HUD里
不用Tick的原因:Tick是逐帧调用 定序器在这里设置的是逐秒调用
2、将倒计时的显示UI放在复用顶层的控件蓝图中,设置get text,
3、在复用的顶层控件蓝图中事件图表中调用HUD里的fen和miao的时间