我一直在使用pygame创建一个非常基本的游戏,只是为了试验,我最近遇到了一些滞后。每当我添加此代码时:
if exitcode==0:
pygame.font.init()
font = pygame.font.Font(None, 24)
text = font.render("Accuracy: "+str(accuracy)+"%", True, (255,0,0))
textRect = text.get_rect()
textRect.centerx = screen.get_rect().centerx
textRect.centery = screen.get_rect().centery+24
screen.blit(gameover, (0,0))
screen.blit(text, textRect)
else:
pygame.font.init()
font = pygame.font.Font(None, 24)
text = font.render("Accuracy: "+str(accuracy)+"%", True, (0,255,0))
textRect = text.get_rect()
textRect.centerx = screen.get_rect().centerx
textRect.centery = screen.get_rect().centery+24
screen.blit(youwin, (0,0))
screen.blit(text, textRect)
落后。我认为这可能是因为我的while
循环,但事实并非如此。谁能告诉我延迟的来源?如果需要,我可以从我的游戏中发布其他代码。谢谢!
答案 0 :(得分:0)
请勿在您的主循环中调用pygame.font.init()
或创建新的Font
对象,因为这会花费大量时间。
如果您已拨打pygame.init()
,则根本不需要pygame.font.init()
。
对于您的Font
对象:只需在主循环外部创建 。
另外,如果你做了很多字体渲染(调用font.render
),你应该缓存生成的表面,因为字体渲染在pygame中也是一个相当昂贵的操作。