我正在尝试制作游戏,但是当我尝试在屏幕上吹几朵花时,它会从60 FPS减慢到12 FPS。
起初,我尝试对所有图像进行.convert(),但随后它们变为粉红色。所以我改用.convert_alpha()。使用.convert_alpha()可使图像不变粉,但只会使FPS变小。
我代码的相关部分是
if isinstance(df['id2'][i], list) and df['id'][1] in df['id2'][i]:
...
elif df['id'][1] == df['id2'][i] :
...
菌群是在主循环之前创建的,所以我并不是在每个循环中都创建图像,而是通过渲染功能传递一个列表,该功能只会将图像拖到屏幕上。
如果我注释掉renderFlora()方法,它将达到60 FPS,但是如果我将其留在其中会大幅下降,我不知道为什么,因为我已经为平铺的背景绘制了很多图像。方法。
答案 0 :(得分:0)
通过对菌群进行预处理来提高性能。在应用程序循环之前在表面上渲染并在应用程序循环中blit
表面:
def main():
# [...]
flora_surf = pygame.Surface(screen.get_size())
renderFlora(flora, flora_surf)
while True:
# [...]
#Draw Midground Items/Tiles
# renderFlora(flora, screen) <-- DELETE
screen.blit(flora_surf, (0, 0))
# [...]