【UE4 RTS游戏】05-自定义日期和时间
迪丽瓦拉
2024-05-31 11:01:58
0

效果

步骤

  1. 打开项目设置,重新设置玩家状态类为“MyGameState”

  1. 打开“MyGameState”,

点击类设置,选中父类为“GameStateBase”

接着创建一些变量:

(1)“TimeUnit”,浮点型,私有,默认值为1.0

(2)“Clockwork”,浮点型,私有,默认值为0.0

(3)“Seconds”,整型,公有,默认值为0

(4)“Minutes”,整型,公有,默认值为0

(5)“Hours”,整型,公有,默认值为0

(6)“GameTime”,整型数组,私有,默认值为0

(7)“Day”,整型,公有,默认值为1

(8)“Month”,整型,公有,默认值为1

(9)“Year”,整型,公有,默认值为1

(10)“GameDate”,整型数组,私有,默认值为0

(11)“DayTick”,整型,私有,默认值为0

添加如下节点:

将选中的节点重叠到函数

重命名该函数为“Set Clockwork”

双击打开“Set Clockwork”,重命名输入输出节点,设置为纯函数

  1. 添加一个新函数,命名为“Clock”,用于来计算当前的游戏时间(时分秒)

在函数内添加如下节点:

然后在事件图表中使用该函数

此时运行游戏就可以打印当前游戏的运行时间:

可以看到已经打印出了格式为时分秒的游戏时间,但是游戏时间走的太快了,我们可以修改“TimeUnit”这个变量的默认值为2.5

此时游戏里的一天(24h)就相当于现实世界的一分钟。

按照这样计算,我们修改“TimeUnit”这个变量的默认值为150,则游戏里的一天就相当于现实世界的一个小时。

此时的游戏时间就走的比较慢了:

  1. 创建一个新函数,命名为“Calendar”,用来计算当前的游戏日期

在函数内添加如下节点:

在事件图表中调用该函数:

调小变量“TimeUnit”的默认值,让游戏时间变得更快

此时运行游戏效果如下:

可以看到随着游戏时间的增加,游戏中的日期也会增加

为了能够在游戏开始前,能够根据用户设置的时间来设置游戏起始时间,我们在事件图表中添加如下节点:

我设置变量“Year”、“Month”、“Day”的默认值分别为2022、12、31,运行结果如下:

相关内容