【问题标题】:Unreal Engine - event handling inside 'while...' loop虚幻引擎 - 'while...' 循环内的事件处理
【发布时间】: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 蓝图编辑器中完成?

StaminaRegen defined function

Part of code with an appropriate event handler

【问题讨论】:

  • 以这种方式比较浮点值(为了完全相等)可能是bad idea
  • 那你想怎么做呢?恐怕没有很多其他方法可以检查一个变量是否等于另一个。
  • 关于 C++ 代码,您可以使用epsilon approximation
  • 它对代码的整体稳定性或性能有多大影响(假设有大量的游戏内功能使用这种技术)?我在代码结构中排除了潜在的人为因素(例如,而不是比较,重写当前变量的值 - 使用 = 而不是 == 的一个著名错误)。
  • “它对代码的整体稳定性或性能有多大影响” 它会影响你的性能,只要你的 while() 循环条件保持为真(它可能会运行无限的)。但我不确定这里真正适用的是什么。您是否提供了您在问题中发布的确切 C++ 代码,或者虚幻引擎是否为您生成了一些东西? (我怀疑在后一种情况下应该正确完成)。

标签: c++ timer event-handling unreal-engine4 unreal-blueprint


【解决方案1】:

我建议当 set timer 事件在循环中运行时,不需要 while 循环并且使事情复杂化只需使用一个简单的分支,我可能又错了。

【讨论】:

  • 无论如何,谢谢您的回复。我刚刚拿到了纸质教程,其中也将包括这种类型的操作(我希望如此:p),所以迟早我会发现:)
猜你喜欢
  • 2022-06-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-01
  • 1970-01-01
  • 2015-02-07
  • 2020-07-22
  • 2022-06-28
相关资源
最近更新 更多