当前位置:  开发笔记 > 编程语言 > 正文

游戏主循环中的pygame clock.tick()vs framerate

如何解决《游戏主循环中的pygameclock.tick()vsframerate》经验,为你挑选了1个好方法。

每个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)

根据api get_ticks():

返回自调用pygame.init()以来的毫秒数.在pygame初始化之前,这将始终为0.

但是clock.tick():

应该每帧调用一次此方法.它将计算多少.自上一次调用以来已经过了几毫秒.

如果传递可选的帧率参数,该函数将延迟以使游戏运行速度低于每秒给定的滴答数.这可以用于帮助限制游戏的运行时速度.通过每帧调用一次Clock.tick(40),程序将永远不会超过每秒40帧.

我有点困惑,这是否意味着clock.tick()直接影响自游戏开始以来经过了多少毫秒?

所以clock.tick(40)意味着我"发出"每秒40帧,而while循环每秒运行40次?

我没有看到fps和ticks之间的关系.

更新:我实际上只是测试了它,并且get_ticks()仍然以mls返回实际时间,无论你给予什么fps tick() - 0.1或者30或者60.

所以它似乎clock.tick()只是设置了游戏应该运行的速度,以及循环应该自我更新的频率.

不过我还是有点困惑,欢迎其他答案.



1> ModoUnreal..:

FPS,每秒帧数,是每单位时间显示的帧数.
1/FPS是每帧之间应该经过的时间量.
Tick只是PyGame中时间的衡量标准.

clock.tick(40)意味着每秒最多应该通过40帧.

推荐阅读
大大炮
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有