【发布时间】:2015-10-02 19:32:46
【问题描述】:
我正在使用 GameMaker Studio,你可以把它想象成一个巨大的循环。
我使用计数器变量step 来跟踪它是什么帧。
为了提高效率,我只想每 X 步运行一些代码。
if step mod 60 {
}
将每 60 步(或 1 秒以 60 fps)运行该块。
我的理解是,模数是一项繁重的操作,我认为计算可能会因数千步而失控。有没有更有效的方法来做到这一点?
可能涉及位运算符?
我知道这适用于所有其他帧:
// Declare
counter = 0
// Step
counter = (counter + 1) & 1
if counter {
}
或者在 60FPS 时模数对性能的影响可以忽略不计,即使数字很大?
【问题讨论】:
-
一般来说,我的态度是在你不得不担心之前不要担心性能。尤其是在这么低的水平上。与加法相比,模数很重,但与字符串比较或其他东西相比可能很轻。如果我的想法是正确的,那么模数就是 3 次算术运算,所以实际上是零时间。
-
你为什么不运行一个单独的线程来经常触发事件。
-
我不确定这是否适用,因为很多这些东西都是在运行时完成的。例如。用户可以将 FPS 更改为 30,然后所有后续的跳帧也会更改。当然,步进变量永远不会是恒定的。
标签: performance time modulus processing-efficiency