绘制多个表面时如何修复 pygame 中的滞后

How to fix lag in pygame when drawing multiple surfaces

我在游戏中想要的是一个围绕玩家的圆圈,其中所有内容都可见,但在该圆圈之外很难看到东西。基本上是手电筒光环,外面的一切都是黑暗的,很难看到。我花了一段时间才让它工作,但现在我以 20FPS 的速度玩游戏 运行s 并且在正常情况下 运行ning 60FPS 时明显滞后。关于如何在保持相同想法的同时让游戏变得更好的任何想法 运行?

class Flashlight:
    def __init__(self):
        self.flashlight_surf = pygame.Surface((SCREEN_W, SCREEN_H))
        self.flashlight_surf2 = pygame.Surface((SCREEN_W, SCREEN_H))

        self.flashlight_surf2.set_colorkey((1,1,1))
        self.flashlight_surf2.set_alpha(200)
        self.flashlight_radius = 200

    def flashlight_update(self):
        self.flashlight_surf2.fill(black)

        pygame.draw.circle(self.flashlight_surf2, (1,1,1), (round(player.x) + 
        32, round(player.y) + 32), self.flashlight_radius)

        display.blit(self.flashlight_surf2, (0,0))
        self.flashlight_surf2.blit(self.flashlight_surf, (0,0))

尝试改变

self.flashlight_surf2 = pygame.Surface((SCREEN_W, SCREEN_H))

self.flashlight_surf2 = pygame.Surface((SCREEN_W, SCREEN_H)).convert()

转换表面可以提高6倍的blitting速度as stated here

如果convert() doesn't work use convert_alpha()