每个 pygame 都有一个游戏循环,如下所示:
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
pygame.display.flip()
print("tick " + str(pygame.time.get_ticks()))
clock.tick(1)
根据 get_ticks()
的 api:
返回调用 pygame.init() 后的毫秒数。在 pygame 初始化之前,这将始终为 0。
但是 clock.tick()
:
此方法应每帧调用一次。它会计算有多少。自上次调用以来已经过去了毫秒数。
如果您传递可选的帧速率参数,该函数 将延迟以保持游戏运行速度 低于给定的每秒滴答数。这可用于帮助限制游戏的运行速度。通过每帧调用一次 Clock.tick(40),程序将永远不会以超过每秒 40 帧的速度运行。
我有点疑惑,难道说 clock.tick()
直接影响游戏开始后过了多少毫秒?
所以 clock.tick(40)
意味着我每秒“发出”40 帧, 而 while 循环每秒运行 40 次?
我没有看到 fps 和 ticks 之间的关系。
UPDATE: I actually just tested it and get_ticks()
still returns REAL time in mls no matter what fps you give to tick() - 0.1
or 30
or 60
。
所以看起来 clock.tick()
只是设置游戏应该运行多快或者 while 循环应该多久更新一次,通过它自己运行。
但是我仍然有点困惑,欢迎其他答案。
原文由 ERJAN 发布,翻译遵循 CC BY-SA 4.0 许可协议
FPS , Frames Per Second ,是每单位时间显示的帧数。
1 / FPS 是每帧之间应该经过的时间量。
Tick 只是 PyGame 中的时间度量。
clock.tick(40)
意味着每秒 最多 应该通过 40 帧。