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

Pygame - blit 导致滞后

如何解决Pygame - blit 导致滞后

我正在制作一个简单的平台游戏,当我使用 pygame.surface.blit() 添加背景时会导致很多延迟,但是当我使用 pygame.suface.fill() 时,它以 ~120 fps 的速度运行。

我该如何解决这个问题?

# map vars
mapFloor = []
ground = 700
mapController(True)
bg1Colour = bg1Colour = transform.scale(image.load('assets/PNG/Backgrounds/set1_background.png'),(1280,1024))
bg1Colour = [bg1Colour,bg1Colour.get_rect()]
bg1Tiles = transform.scale(image.load('assets/PNG/Backgrounds/set1_tiles.png'),1024))
bg1Tiles = [bg1Tiles,bg1Tiles.get_rect()]
bg1Hills = transform.scale(image.load('assets/PNG/Backgrounds/set1_hills.png'),1024))
bg1Hills = [bg1Hills,bg1Hills.get_rect()]            
           


while not finished:

    for events in event.get():
        exiCheck()
        playerController(True)

    surface.blit(bg1Colour[0],bg1Colour[1])
    surface.blit(bg1Tiles[0],bg1Tiles[1])
    surface.blit(bg1Hills[0],bg1Hills[1])

    mapController(False)
    player = playerController(False)

    display.flip()
    clock.tick(120)

解决方法

尝试不使用列表或元组尝试通过assingnig它们,以便终端不应该检查列表而只使用带符号的值

,

确保背景 Surface 与显示 Surface 具有相同的格式。使用 convert()(或 convert_alpha())创建具有相同像素格式的 Surface。这提高了当背景为 blit 时显示的性能,因为格式兼容并且 blit 不需要执行隐式转换。

bg_surf = image.load('assets/PNG/Backgrounds/set1_background.png').convert()
bg1Colour = bg1Colour = transform.scale(bg_surf,(1280,1024))

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