绘制多个表面时如何修复 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()
我在游戏中想要的是一个围绕玩家的圆圈,其中所有内容都可见,但在该圆圈之外很难看到东西。基本上是手电筒光环,外面的一切都是黑暗的,很难看到。我花了一段时间才让它工作,但现在我以 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()