【发布时间】:2017-10-04 20:06:51
【问题描述】:
我正在尝试创建一个事件处理程序,它会影响游戏中的耐力再生,例如每 0.75 秒滴答 CurrentStamina 变量应该增加 BasicStaminaRegen 变量的值.如果 CurrentStamina == MaxStamina,我想将它包含在一个 while 循环中以检查每个滴答声。
概念 C++ 代码:
...
float currentStamina = 25.0, maxStamina = 100.0, basicStaminaRegen = 5.0;
while(currentStamina != maxStamina) {
(something related to handle a timer)
...
currentStamina += basicStaminaRegen;
}
...
问题是,如何在 UE 蓝图编辑器中完成?
【问题讨论】:
-
以这种方式比较浮点值(为了完全相等)可能是bad idea。
-
那你想怎么做呢?恐怕没有很多其他方法可以检查一个变量是否等于另一个。
-
关于 C++ 代码,您可以使用epsilon approximation。
-
它对代码的整体稳定性或性能有多大影响(假设有大量的游戏内功能使用这种技术)?我在代码结构中排除了潜在的人为因素(例如,而不是比较,重写当前变量的值 - 使用 = 而不是 == 的一个著名错误)。
-
“它对代码的整体稳定性或性能有多大影响” 它会影响你的性能,只要你的
while()循环条件保持为真(它可能会运行无限的)。但我不确定这里真正适用的是什么。您是否提供了您在问题中发布的确切 C++ 代码,或者虚幻引擎是否为您生成了一些东西? (我怀疑在后一种情况下应该正确完成)。
标签: c++ timer event-handling unreal-engine4 unreal-blueprint