我正在使用pygame.time.set_timer(event,milliseconds)
将2个USEREVENT添加到队列中; USEREVENT +每秒1(1000ms),每5ms USEREVENT。这应该意味着每获得一个USEREVENT + 1我就获得200个USEREVENT。我只收到100个活动。
似乎10ms是计时器可以拥有的最小延迟。我正在尝试使用它来控制我的FPS,并且USEREVENT + 1信号通过勾选“更新”游戏逻辑,但如果计时器具有10ms的较低上限,那么这意味着我不能高于100FPS。有谁知道为什么?
此外,对于奖励积分,毫秒必须是整数,这意味着我只能拥有1000的倍数的fps(例如10,20,25,50,100)。你怎么认为我用这种方法可以达到60fps?最初,我正在睡觉,直到下一帧的时间,但我希望它对CPU很好,所以我想要在嘀嗒声之间闲置。这就是我使用pygame.time.set_timer的原因,因为pygame.event.wait在队列中发生事件之前一直空闲。
答案 0 :(得分:1)
要限制FPS,请使用:Clock.tick(fps_cap)
http://www.pygame.org/docs/ref/time.html#Clock.tick 应该每帧调用一次此方法。它将计算多少 自上次调用以来已经过了几毫秒。
如果传递可选的帧率参数,函数将延迟到 保持游戏运行速度低于每秒给定的滴答数。这个可以 用于帮助限制游戏的运行速度。通过电话 Clock.tick(40)每帧一次,程序永远不会超过 每秒40帧。
请注意,此函数使用SDL_Delay函数,该函数不准确 在每个平台上,但不使用太多的CPU。如果使用tick_busy_loop 你想要一个准确的计时器,不要介意咀嚼cpu。