Python 在pygame中呈现文本会导致延迟
我的函数模块中有Python 在pygame中呈现文本会导致延迟,python,pygame,lag,Python,Pygame,Lag,我的函数模块中有write函数,如下所示 def write(size, writing, color, x, y): font = pygame.font.SysFont("corbel", size) text = font.render(writing, True, color) D.blit(text, (x, y)) 我将其导入主模块,并在主模块中创建了如下函数 def print_stats(): write(30, f"Red player's
write
函数,如下所示
def write(size, writing, color, x, y):
font = pygame.font.SysFont("corbel", size)
text = font.render(writing, True, color)
D.blit(text, (x, y))
我将其导入主模块,并在主模块中创建了如下函数
def print_stats():
write(30, f"Red player's hp {player2.hp}", (200, 50, 50),10, 10)
write(30, f"Green player's hp {player1.hp}", (50, 200, 50),10, 60)
只要我不把print_stats()
放在主循环中,游戏就运行得很好,但是,只要我尝试运行这个函数,它就会严重降低FPS。我在代码中没有看到任何可能导致延迟的东西,我做错了什么?谢谢
编辑:不知道这是否是relevnet,但我忘了提到我将
pygame.init() 避免在每个帧中创建字体对象。
根据应用程序循环之前的大小创建字体。e、 g:
font30=pygame.font.SysFont(“corbel”,30)
def write(字体、书写、颜色、x、y):
text=font.render(书写、真、彩色)
D.blit(文本,(x,y))
def print_stats():
写(font30,f“红色玩家的hp{player2.hp}”,(200,50,50),10,10)
写(font30;f“绿色玩家的hp{player1.hp}”,(50200,50),10,60)
这并不能解决文本在每一帧中呈现的问题。如果仍然滞后,则在分别更改player1.hp
和player2.hp
时,必须渲染文本表面一次。e、 g:
职业玩家:
定义初始化(自身、颜色、名称):
self.color=颜色
self.name=名称
# [...]
def更改HP(自身,val):
self.hp+=val
self.hptext=font30.render(f“{self.name}玩家的hp{self.hp}”,True,self.color)
D.blit(player1.hptext,(10,60))
但为什么我在另一个项目中做了完全相同的事情,效果很好,但不是这个one@hippozhipos可能有很多原因,不同的字体,文本大小,文本长度,帧率。。。