问题描述
我制作了一个地形生成器,我希望我的游戏全屏显示,但是当我更改块大小时 FPS 会降低。我不知道如何解决这个问题。
这是我的代码:
if UIApplication.shared.canopenURL(URL(string: "fb://profile/1234")!) {
UIApplication.shared.open(URL(string: "fb://profile/1234")!,options: [:],completionHandler: nil)
} else {
UIApplication.shared.open(URL(string: "https://facebook.com/pageurl")!,completionHandler: nil)
}
我试图只在玩家移动时更新地形,但我的 FPS 仍然很低,当我停止移动时,玩家屏幕变白。
感谢阅读。
解决方法
确保背景Surface与显示Surface具有相同的格式。使用 convert()
(或 convert_alpha()
)创建具有相同像素格式的 Surface。这提高了当背景为 blit
时显示的性能,因为格式兼容并且 blit
不需要执行隐式转换:
playerimg = pygame.image.load('assets/player.png').convert_alpha()
mouseimg = pygame.image.load('assets/mouse.png').convert_alpha()
grassimg = pygame.image.load('assets/grass.png').convert_alpha()
stoneimg = pygame.image.load('assets/stone.png').convert_alpha()
您可以通过支付内存使用量来购买性能。用完整的地图创建一个大的 Surface
:
game_map = pygame.Surface((genSize * 64,genSize*64))
for x in range(genSize):
for y in range(genSize):
g = random.randint(1,2)
if g == 1:
game_map.blit(grassimg,(x * 64,y * 64))
elif g == 2:
game_map.blit(stoneimg,y * 64))
blit
当前在屏幕上可见的区域:
while game:
# [...]
map_sub_rect = screen.get_rect(topleft = (cameraX,cameraY))
screen.blit(game_map,(0,0),map_sub_rect)
# [...]