ue4制作动态血条效果

在开始本教程之前,需要对UE4 UMG Designer UI有基本的了解。

在开发用户界面元素时,考虑如何优化生成的内容非常有用,因为这可以提高生产率并减少将来的优化需求。例如,取决于项目的大小,属性绑定对于将信息传输到用户界面可能很有用。但是,如果您具有更复杂的用户界面设置,或者需要优化项目,则可以考虑根据需要更新用户界面,而不是每帧都进行更新。

对于本实用指南,我们将研究将信息传输到HUD的三个示例。当这三个方法都解决了问题时,我们的第三个示例显示了最有效的方法-使更新过程远离滴答事件,并使用事件分派器手动更新信息。

例子1.绑定函数

在这个例子中,我们将使用考虑健康/能源的更新为玩家˚F UNC绑定

在这里,我们有一个基本的“健康/能量”设置。CastBinding_SimpleHealth-ue4 data-srcset="" />

映射到位后,我们将为进度创建名为GetHealthGetEnergy的绑定。然后,功能绑定会接收玩家角色的蓝图以及我们为健康和能量定义的变量并进行分配(我们的GetHealth绑定如下所示)。CastBinding_BindingScript-ue4 data-srcset="" />为了进行调试,我们还添加了一个Print String节点以显示Health变量的值。

在游戏中(如下图所示),我们游戏角色的健康和能量值被传输并反映在HUD中。但是,您可以看到,即使我们不更新运行状况值,蓝色的调试文本也表示我们仍在每帧检查运行状况值。CastBinding_InGame-ue4 data-srcset="" />

如果这是我们所做的唯一事情,那么对我们的影响可能不会太大。如果我们有一个更复杂的系统,并且以此方式配置了多个属性,并且它们都检查了每个帧中的更新,则这可能会减慢速度并影响我们的性能,我们希望避免这种情况。

例子2.绑定属性

代替使用Binding Function,我们可以使用  Property Binding  ,它更具成本效益。

我们继续相同的“健康/能量”设置。CastBinding_SimpleHealth-ue4 data-srcset="" />

在“ 小部件蓝图” 的“ 图形”选项卡上,我们使用“ 事件构造”获取指向“玩家角色蓝图”的链接。PropBinding_EventConstruct-ue4 data-srcset="" />在第一个示例中,我们使用每帧将“蓝图”投射到“蓝图字符”中,以获取健康和能量变量。在这里,我们只做一次并将其保存为链接,因此我们不必在每一帧都这样做。这比以前的方法更具成本效益。

然后,我们可以将进度条的值直接与“蓝图角色”中的变量相关联。PropBinding_HealthBound-ue data-srcset="" />

使用这种方法,我们不再给出每一帧,并且不再检查“角色的角色蓝图是什么”,以及何时已经“赋予我健康和活力值”。我们知道玩家的角色是什么,但我们仍然看着他并询问每个帧,“角色的健康和精力是什么?”

与以前的方法一样,这通常是安全的,具体取决于项目的大小。但是随着扩展,您需要进行优化,如果您以这种方式配置了多个属性,则可以开始了解它如何影响性能。

例子3.结果事件

在这里,我们着眼于使用事件来仅在HUD更改时更新它。

继续我们的健康/能源设置。CastBinding_SimpleHealth-ue4 data-srcset="" />

在我们的Blueprint角色中,我们在脚本末尾添加了一个Event Dispatcher,这会使我们的健康状况恶化。Decrease-Health-ue4 data-srcset="" />为了进行测试,我们将健康状态设置为每按一次F键就减少一次。

现在我们正在减少健康,因此我们也称为事件调度程序。在HUD小部件蓝图的图表上,我们可以再次使用事件结构来检索并保存指向玩家蓝图角色的链接。我们还可以将自定义事件绑定到该蓝图角色内的事件调度程序,以便在调用事件管理器时触发自定义事件。Event_WBGraph-ue4

现在,我们的HUD项目“小部件蓝图”中的自定义事件仅在玩家的健康状况显示发生变化时才检查并更新其状态,并且并不总是检查该值,无论它是否发生了变化。例如,您可以将相同的设置应用于角色的能量,最后得到类似于HUD小部件蓝图所示的设置。Full-Setup-ue4

上面,用户事件UpdateHealthUpdateEnergy与我们蓝图角色的事件调度程序相关联,仅当角色的Health / Energy值更改时才触发。在绑定过程之后创建HUD时,我们还会通过触发这两个用户事件来初始化映射。

Author: incg_UE4

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注