2015-10-29 67 views
0

我一直在使用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

请勿在您的主循环中调用pygame.font.init()或创建新的Font对象,因为这会耗费大量时间。

如果您已致电pygame.init(),则完全不需要pygame.font.init()

对于你的Font对象:只需创建它一次以外你的主循环。另外,如果你做了很多字体渲染(调用font.render),你应该缓存结果表面,因为在pygame中字体渲染也是一个相当昂贵的操作。