在Pygame中显示FPS

5

我正在和我的朋友一起使用pygame开发Python项目。我们试图在游戏中显示FPS,但是我们总是失败。FPS计数器始终为零。以下是代码:

#Create Text
def Render_Text(what, color, where):
    font = pygame.font.Font('assets/Roboto.ttf', 30)
    text = font.render(what, 1, pygame.Color(color))
    window.blit(text, where)

#Show FPS
    Render_Text(str(int(clock.get_fps())), (255,0,0), (0,0))
    print("FPS:", int(clock.get_fps()))

2
clock = pygame.time.Clock() 吗? - CopyrightC
1
是的,clock是pygame.time.Clock()。 - Bla0
你每帧只调用一次 clock.tick() 吗? - Rabbid76
2个回答

8

get_fps() 只有在每帧调用一次 tick() 函数时才能给出正确的结果:

clock = pygame.time.Clock()
run = True
while run:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            run = False          

    clock.tick()
    print(clock.get_fps())

    # [...]

请查看get_fps()的文档。

get_fps()计算时钟帧速率

get_fps() -> float

计算游戏的帧速率(以每秒帧数为单位)。它是通过对最近十次Clock.tick()调用的平均值进行计算的。


4

初始化您的时钟

clock = pygame.time.Clock()

添加你的字体

font = pygame.font.SysFont("Arial" , 18 , bold = True)

你的fps函数
def fps_counter():
    fps = str(int(clock.get_fps()))
    fps_t = font.render(fps , 1, pygame.Color("RED"))
    window.blit(fps_t,(0,0))

在循环中调用您的函数

fps_counter()
#dont forget to add tick(60) to run 60 frame per sec

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接