【UE4 RTS】08-Setting up Game Clock

前言

本篇实现的效果是在游戏运行后能够记录当前的游戏时间(年月日时分秒),并且可以通过修改变量从而改变游戏时间进行的快慢。

效果

步骤

1. 在Blueprints文件夹中新建如下两个文件夹,分别命名为“GameSettings”、“Player”

【UE4 RTS】08-Setting up Game Clock_第1张图片

将“RTS_CameraPawn_BP”和“RTS_PlayerController_BP”移动到“Player”文件夹中

【UE4 RTS】08-Setting up Game Clock_第2张图片

 将“RTS_GameModeBase_BP”移动到“GameSettings”文件夹中

【UE4 RTS】08-Setting up Game Clock_第3张图片

新建一个游戏状态基础

【UE4 RTS】08-Setting up Game Clock_第4张图片

命名为“RTS_GameState_BP”

【UE4 RTS】08-Setting up Game Clock_第5张图片

 新建一个文件夹,命名为“Library”

【UE4 RTS】08-Setting up Game Clock_第6张图片

在该文件夹中新添加一个蓝图函数库

【UE4 RTS】08-Setting up Game Clock_第7张图片

命名为“RTS_FuncLib”

【UE4 RTS】08-Setting up Game Clock_第8张图片

 再添加一个蓝图接口

【UE4 RTS】08-Setting up Game Clock_第9张图片

命名为“RTS_GameTime_IF”

 【UE4 RTS】08-Setting up Game Clock_第10张图片

 2. 打开蓝图函数库“RTS_FuncLib”,重命名新函数为“SetGameTime”

【UE4 RTS】08-Setting up Game Clock_第11张图片

添加三个输入和两个输出,分别命名为“DeltaTime”、“GameSpeed”、“InitialGameTime”、“GameTime”、“DayCount”

【UE4 RTS】08-Setting up Game Clock_第12张图片

添加如下节点

【UE4 RTS】08-Setting up Game Clock_第13张图片

3. 打开蓝图接口“RTS_GameTime_IF”,将新函数重命名为“UpdateGameSpeed”

【UE4 RTS】08-Setting up Game Clock_第14张图片

添加一个输入,命名为“SpeedMultiplier”,浮点类型

【UE4 RTS】08-Setting up Game Clock_第15张图片

4. 打开游戏状态基础“RTS_GameState_BP”,新建一个宏,命名为“ReferneceCasts”

【UE4 RTS】08-Setting up Game Clock_第16张图片

在宏中添加如下节点来获取玩家控制器“RTS_PlayerController_BP”的引用,其中变量“ControllerRef”是类型转换后引脚“As RTS Player Controller BP”提升为的变量。

【UE4 RTS】08-Setting up Game Clock_第17张图片

在事件图表中添加如下节点来执行宏

【UE4 RTS】08-Setting up Game Clock_第18张图片

 每一帧执行蓝图函数库中的创建的函数“SetGameTime”

【UE4 RTS】08-Setting up Game Clock_第19张图片

将引脚“GameSpeed”和“InitialGameTime”提升为变量,然后命名为“GameSpeed”和“GameTime”,默认值分别为150、0

【UE4 RTS】08-Setting up Game Clock_第20张图片

 新添加一个整型变量,命名为“DayCounter”

【UE4 RTS】08-Setting up Game Clock_第21张图片

 设置“GameTime”和“DayCounter”

【UE4 RTS】08-Setting up Game Clock_第22张图片

添加如下三个整型变量,分别命名为“Hours”、“Minutes”、“Seconds” ,均为公有变量,这个变量用于表示当前的游戏时间。其中,“Hour”的默认值设置为11,表示游戏一开始游戏处于中午。

【UE4 RTS】08-Setting up Game Clock_第23张图片

在游戏开始时,根据时分秒设置初始的游戏时间(单位:小时)

【UE4 RTS】08-Setting up Game Clock_第24张图片

 再添加三个整型变量,分别命名为“Year”、“Month”、“Day”,用于表示当前的游戏日期,均为公有变量,这里默认值分别设置为2023、8、10

 【UE4 RTS】08-Setting up Game Clock_第25张图片

 添加一个整型数组类型变量,命名为“GameDate”

【UE4 RTS】08-Setting up Game Clock_第26张图片

在设置初始游戏时间后继续设置初始游戏日期

【UE4 RTS】08-Setting up Game Clock_第27张图片

新建一个浮点型变量,命名为“DefaultGameSpeed”,默认值设为150

【UE4 RTS】08-Setting up Game Clock_第28张图片

设置初始游戏速度:

【UE4 RTS】08-Setting up Game Clock_第29张图片

新建一个函数,命名为“SetClock”

 该函数逻辑如下:

【UE4 RTS】08-Setting up Game Clock_第30张图片

【UE4 RTS】08-Setting up Game Clock_第31张图片

【UE4 RTS】08-Setting up Game Clock_第32张图片

再添加一个函数,命名为“SetCalendar”

【UE4 RTS】08-Setting up Game Clock_第33张图片

函数逻辑如下:

【UE4 RTS】08-Setting up Game Clock_第34张图片

【UE4 RTS】08-Setting up Game Clock_第35张图片

【UE4 RTS】08-Setting up Game Clock_第36张图片

【UE4 RTS】08-Setting up Game Clock_第37张图片

再事件图表中去调用这两个函数

【UE4 RTS】08-Setting up Game Clock_第38张图片

在类设置中添加蓝图接口“RTS_GameTime_IF”

【UE4 RTS】08-Setting up Game Clock_第39张图片

新添加一个浮点型变量,命名为“SpeedMutiplier”,默认值设为1

【UE4 RTS】08-Setting up Game Clock_第40张图片

 在事件图表中添加如下节点

【UE4 RTS】08-Setting up Game Clock_第41张图片

 添加一个事件调度器,命名为“GameSpeedControl”

 添加一个浮点类型输入,命名为“GameTime”

【UE4 RTS】08-Setting up Game Clock_第42张图片

 调用该事件调度器

【UE4 RTS】08-Setting up Game Clock_第43张图片

 5. 打开游戏模式基础“RTS_GameModeBase_BP”,设置游戏状态类为“RTS_GameState_BP”

【UE4 RTS】08-Setting up Game Clock_第44张图片

此时运行游戏可以看到视口左上角打印的年月日时分秒,如下所示:

 如果想加快游戏时间,可以将游戏状态“RTS_GameState_BP”中的变量“DefaultGameSpeed”的默认值设置小一点。

【UE4 RTS】08-Setting up Game Clock_第45张图片

 比如我把变量“DefaultGameSpeed”的默认值设置为0.025,游戏时间就加快了:

你可能感兴趣的:(#,虚幻4,RTS游戏,ue4)