【UE4 RTS】12-HUD functionality Part2

前言

本篇实现了通过按钮控件暂停、加快、减慢游戏速度的功能。

效果

步骤

1. 打开控件蓝图“GameTime_HUD”,在设计器中对进度条控件的百分比创建一个绑定函数

【UE4 RTS】12-HUD functionality Part2_第1张图片

 绑定函数命名为“Get_ProgressBar_GameSpeed_SetSpeedDisplay”,并设置该函数类别属于GameSpeed

【UE4 RTS】12-HUD functionality Part2_第2张图片 

 新建一个浮点类型的变量,命名为“SpeedSetting”,用于控制游戏速度,设置默认值为3

【UE4 RTS】12-HUD functionality Part2_第3张图片

 绑定函数的逻辑节点如下所示:

【UE4 RTS】12-HUD functionality Part2_第4张图片

 在设计器中,对如下三个按钮控件创建点击事件

【UE4 RTS】12-HUD functionality Part2_第5张图片

在图表中,创建一个布尔类型的变量,命名为“isPaused”,用于表示游戏是否暂停。

【UE4 RTS】12-HUD functionality Part2_第6张图片

 新建一个浮点类型变量,命名为“CurrentSpeedSetting”

【UE4 RTS】12-HUD functionality Part2_第7张图片

设置变量“SpeedSetting”和“CurrentSpeedSetting”的类别为“GameSpeed”

【UE4 RTS】12-HUD functionality Part2_第8张图片

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

【UE4 RTS】12-HUD functionality Part2_第9张图片

2. 新建一个枚举,命名为“GameSpeedSettingEnum”

【UE4 RTS】12-HUD functionality Part2_第10张图片

 【UE4 RTS】12-HUD functionality Part2_第11张图片

打开“GameSpeedSettingEnum”,添加如下枚举值,其中速度0表示暂停,速度为3表示默认速度。

【UE4 RTS】12-HUD functionality Part2_第12张图片

3. 回到控件蓝图“GameTime_HUD”中,新添加一个函数,命名为“SetGameSpeed”

 

 该函数添加一个输入,类型为我们刚创建的枚举“GameSpeedSettingEnum”

【UE4 RTS】12-HUD functionality Part2_第13张图片

在该函数内创建一个局部变量“SpeedMultiplierLocal”

在函数内添加如下节点

【UE4 RTS】12-HUD functionality Part2_第14张图片

4. 打开游戏状态“RTS_GameState_BP”,将如下“Set GameTime”节点替换为“Set GameSpeed”节点

【UE4 RTS】12-HUD functionality Part2_第15张图片

【UE4 RTS】12-HUD functionality Part2_第16张图片

5. 回到控件蓝图“GameTime_HUD” 中,添加一个变量,命名为“GameStateRef”,变量类型为“RTS_GameState”的对象引用。

【UE4 RTS】12-HUD functionality Part2_第17张图片【UE4 RTS】12-HUD functionality Part2_第18张图片

继续在函数“SetGameSpeed”中添加如下节点:

【UE4 RTS】12-HUD functionality Part2_第19张图片

 回到事件图表中,补全暂停按钮“Button_Pause”的逻辑如下所示:

【UE4 RTS】12-HUD functionality Part2_第20张图片

【UE4 RTS】12-HUD functionality Part2_第21张图片

加快游戏速度的按钮“Button_IncreaseSpeed”的逻辑如下所示:

【UE4 RTS】12-HUD functionality Part2_第22张图片

 减少游戏速度的按钮“Button_DecreaseSpeed”的逻辑如下所示:

【UE4 RTS】12-HUD functionality Part2_第23张图片

 添加一个变量命名为“PlayerControllerRef”,变量类型为“RTS_PlayerController_BP”的对象引用:

【UE4 RTS】12-HUD functionality Part2_第24张图片【UE4 RTS】12-HUD functionality Part2_第25张图片

 6. 打开玩家控制器“RTS_PlayerController_BP”中的宏“SpawnWidgets”:

【UE4 RTS】12-HUD functionality Part2_第26张图片

 在刷新节点后,可以看到新出现如下两个引脚

【UE4 RTS】12-HUD functionality Part2_第27张图片

将玩家控制器本身和获取到的游戏状态的引用传入引脚

【UE4 RTS】12-HUD functionality Part2_第28张图片

7. 打开游戏状态“RTS_GameState_BP”中的函数“SetClock”,删除如下区域的节点,让视口中不再输出打印信息。

【UE4 RTS】12-HUD functionality Part2_第29张图片

 还有函数“SetCalendar”中的打印信息的节点也删除

【UE4 RTS】12-HUD functionality Part2_第30张图片

此时运行游戏可以看到我们通过点击按钮可以实现控制游戏速度的快慢:

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