Throttle 和 Debounce
插件提供了两种特殊条件的访问:Not more than once in <X> seconds 和 For a postponed event。
备注
由于 Construct 3 中可视化编程的限制,这些条件是通过“伪循环”实现的,因此你可能会注意到名称左侧的循环图标。
但是,这实际上是条件,而不是循环。
如果你更喜欢使用 JavaScript,可以参考以下文章:以搜索框为例的 Debounce 和 以滚动页面为例的 Throttle。
Throttle
有时,游戏中的某些部分可能会严重影响整体性能。例如,物理或人工智能处理。
由于这些计算的复杂性,最好避免过于频繁地使用它们。在这种情况下,通常使用 Every <X> seconds 来每隔一段时间运行一次代码,但这并不总是可行。
如果我们有一个复杂的游戏机制在点击屏幕时执行怎么办?在需要限制代码执行频率但不能使用计时器的情况下,可以使用特殊条件 Not more than once in <X> seconds。
重要
不建议每一刻使用Not more than once in <X> seconds,这不会产生任何后果,但最好使用Every <X> seconds。
Debounce
某些 Yandex Games SDK 方法对特定时间内的请求数量有限制。如果你忽视了这些限制,你的游戏可能无法通过审核。
例如,如果你过于频繁地更新排行榜中的分数,那么你需要使用特殊条件 For a postponed event。
然而,它可能与之前的条件 Not more than once in <X> seconds 混淆,因为我们也是用它来隐藏不应频繁调用的代码,那么两者有什么区别?
它们的主要区别在于,Not more than once in <X> seconds 限制调用频率,而 For a postponed event 会将函数调用延迟一段时间,这正是我们所需要的。因为在将分数提交到排行榜的情况下,我们并不需要频繁执行函数,只需不超过限制即可。
Not more than once in <X> seconds 和 For a postponed event 之间差异的可视化: