在Pygame中将某些图像拖到屏幕上会很痛苦

时间:2019-05-09 21:57:55

标签: python pygame

我正在尝试制作游戏,但是当我尝试在屏幕上吹几朵花时,它会从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,但是如果我将其留在其中会大幅下降,我不知道为什么,因为我已经为平铺的背景绘制了很多图像。方法。

1 个答案:

答案 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))       

        # [...]