【UE4 RTS】11-HUD functionality Part1

前言

本篇实现了将游戏状态中的游戏时间和游戏日期通过蓝图接口的方式传递给控件蓝图,并且正确显示,另外还实现了控件蓝图界面上切换12小时和24小时制的游戏时间显示方式。

效果

步骤

一、显示游戏日期

1. 打开蓝图接口“RTS_GameTime_IF”

【UE4 RTS】11-HUD functionality Part1_第1张图片

添加一个新函数,命名为“SetGameClock”

【UE4 RTS】11-HUD functionality Part1_第2张图片

 添加函数的输入输出如下

【UE4 RTS】11-HUD functionality Part1_第3张图片

继续新添加一个函数命名为“SetGameCalender”

【UE4 RTS】11-HUD functionality Part1_第4张图片

添加如下输入输出

【UE4 RTS】11-HUD functionality Part1_第5张图片

2. 打开控件蓝图“GameTime_HUD”

【UE4 RTS】11-HUD functionality Part1_第6张图片

 在图表的类设置中添加蓝图接口“RTS_GameTimeIF”

【UE4 RTS】11-HUD functionality Part1_第7张图片

 3. 打开游戏状态“RTS_GameState_BP”

【UE4 RTS】11-HUD functionality Part1_第8张图片

打开函数“SetCalendar”

 【UE4 RTS】11-HUD functionality Part1_第9张图片

添加如下节点

【UE4 RTS】11-HUD functionality Part1_第10张图片 打开函数“SetClock”,添加如下节点

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

 此时,我们在游戏状态中的游戏日期和游戏时间就可以通过蓝图接口传递到控件蓝图了。

 4. 回到控件蓝图“GameTime_HUD”中,打开接口函数“SetGameCalendar”

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

将函数输入的GameDate提升为变量,设置输出的Success引脚为True

【UE4 RTS】11-HUD functionality Part1_第13张图片

 在设计器中,选中用于显示第几日的文本,对其本文内容创建一个绑定函数。

【UE4 RTS】11-HUD functionality Part1_第14张图片

 绑定函数命名为“Get_TextBlock_Day_GetDay”

【UE4 RTS】11-HUD functionality Part1_第15张图片

 函数内容如下,其中,“DayLocal”和“DayTextLocal”是局部变量

【UE4 RTS】11-HUD functionality Part1_第16张图片

 此时运行游戏可以看到控件“TextBlock_Day”会显示当前游戏日期中的日。

5. 新建一个枚举类型,命名为“MonthsNamesEnum”,用于表示每个月的月名

【UE4 RTS】11-HUD functionality Part1_第17张图片

 添加如下枚举值

【UE4 RTS】11-HUD functionality Part1_第18张图片

 6. 回到控件蓝图“GameTime_HUD”,对用于显示月份的文本控件的文本内容创建一个绑定函数,绑定函数命名为“Get_TextBlock_Month_GetMonth”

【UE4 RTS】11-HUD functionality Part1_第19张图片

 新添加一个变量,命名为“MonthNameRef”,变量类型为“MonthsNamesEnum”

【UE4 RTS】11-HUD functionality Part1_第20张图片【UE4 RTS】11-HUD functionality Part1_第21张图片

 函数“Get_TextBlock_Month_GetMonth”的逻辑如下

【UE4 RTS】11-HUD functionality Part1_第22张图片

 此时运行游戏就可以看到游戏日期中的月份了。

在设计器中对用于显示游戏日期中的年份的控件创建一个绑定函数,绑定函数命名为“Get_TextBlock_Year_GetYear”

【UE4 RTS】11-HUD functionality Part1_第23张图片

 【UE4 RTS】11-HUD functionality Part1_第24张图片

 函数逻辑如下,其中“YearLocal”为数组“GameDate”中的第三个元素提升为的局部变量

【UE4 RTS】11-HUD functionality Part1_第25张图片

 此时运行游戏可以看到游戏日期中年月日都能够正确显示。

【UE4 RTS】11-HUD functionality Part1_第26张图片

二、显示游戏时间

1. 打开控件蓝图“GameTime_HUD”中的接口函数“SetGameClock”

【UE4 RTS】11-HUD functionality Part1_第27张图片

将输入的“GameTime”提升为变量

【UE4 RTS】11-HUD functionality Part1_第28张图片

 增加按钮“Button_MC”的按钮点击事件

【UE4 RTS】11-HUD functionality Part1_第29张图片

添加一个布尔类型的变量,命名为“IsMilitaryTime” ,默认值为True

【UE4 RTS】11-HUD functionality Part1_第30张图片【UE4 RTS】11-HUD functionality Part1_第31张图片

 按钮“Button_MC”的点击事件逻辑如下,主要用于切换12小时和24小时制

【UE4 RTS】11-HUD functionality Part1_第32张图片

 回到设计器中,对用于显示小时的文本控件的文本内容创建一个绑定函数

【UE4 RTS】11-HUD functionality Part1_第33张图片

 重命名绑定函数的函数名为“Get_TextBlock_Hour_GetHour”

【UE4 RTS】11-HUD functionality Part1_第34张图片

 首先获取数组“GameTime”中的第三个元素,提升为局部变量“HoursLocal”

【UE4 RTS】11-HUD functionality Part1_第35张图片

添加一个字符串类型的局部变量,命名为“HoursTextLocal”,设置默认值为0

【UE4 RTS】11-HUD functionality Part1_第36张图片

 添加如下节点

【UE4 RTS】11-HUD functionality Part1_第37张图片

【UE4 RTS】11-HUD functionality Part1_第38张图片

【UE4 RTS】11-HUD functionality Part1_第39张图片

【UE4 RTS】11-HUD functionality Part1_第40张图片

【UE4 RTS】11-HUD functionality Part1_第41张图片

【UE4 RTS】11-HUD functionality Part1_第42张图片

在设计器中对文本控件“TextBlock_Minute”的文本内容创建一个绑定函数

【UE4 RTS】11-HUD functionality Part1_第43张图片

 绑定的函数命名为“Get_TextBlock_Minute_GetMinute”

【UE4 RTS】11-HUD functionality Part1_第44张图片

 先将数组“GameTime”中的第二个元素取出提升为局部变量,命名为“MinutesLocal”

【UE4 RTS】11-HUD functionality Part1_第45张图片

 新建一个局部变量“MinutesTextLocal”,设置默认值为0

【UE4 RTS】11-HUD functionality Part1_第46张图片

 继续添加如下节点

【UE4 RTS】11-HUD functionality Part1_第47张图片

对如下文本控件的文本内容创建一个绑定函数

【UE4 RTS】11-HUD functionality Part1_第48张图片

 绑定函数命名为“Get_TextBlock_AMOrPM_GetSecondSpecial”

【UE4 RTS】11-HUD functionality Part1_第49张图片

 先将数组“GameTime”中的第一个元素提升为局部变量,命名为“SecondSpecialLocal”

【UE4 RTS】11-HUD functionality Part1_第50张图片

 新建一个局部变量,命名为“SecondSpecialTextLocal”,默认值为0

【UE4 RTS】11-HUD functionality Part1_第51张图片

 继续在函数内添加如下节点

【UE4 RTS】11-HUD functionality Part1_第52张图片

【UE4 RTS】11-HUD functionality Part1_第53张图片

 在设计器中,对如下文本控件的文本内容创建一个绑定函数

【UE4 RTS】11-HUD functionality Part1_第54张图片

 绑定函数命名为“Get_TextBlock_TimeSpace2_SetSpacerSpecial”【UE4 RTS】11-HUD functionality Part1_第55张图片

 创建一个局部变量“SpecialSpacerLocal”,默认值为“:”

【UE4 RTS】11-HUD functionality Part1_第56张图片

 在函数内添加如下节点

【UE4 RTS】11-HUD functionality Part1_第57张图片

 此时可以看到界面上已经能够正确显示当前游戏的日期和时间:

 如果将游戏状态“RTS_GameState_BP”中的变量“DefaultGameSpeed”和“GameSpeed”从150改为1的话,可以明显看到界面的时间变化加快了。

【UE4 RTS】11-HUD functionality Part1_第58张图片

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