微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何提高地形生成器的性能我获得了 40 FPS

如何解决如何提高地形生成器的性能我获得了 40 FPS

我制作了一个地形生成器,我希望我的游戏全屏显示,但是当我更改块大小时 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)

    # [...]

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。