pygame预加载图片

好饼

我制作了一款当前存在帧频问题的游戏。我确实相信问题是我当前正在加载大量图像,所以我的问题是:“是否可以预加载图像?因此在使用之前基本上先加载它们?”

我不知道这是否可能,但是在我看来,这听起来不错。因此,基本上什么都没有画到屏幕上,但是图像已经准备就绪,没有任何延迟(或最小延迟)。

懒惰

是的,这很简单。

最简单的方法是创建一个dict将用作缓存的方法,以及一种从该缓存加载图像的方法:

image_cache = {}
def get_image(key):
  if not key in image_cache:
    image_cache[key] = pygame.image.load(key)
  return image_cache[key]

(如果您需要更多功能,则可以为此创建一个类)。

现在,当您要使用图像时,请使用以下get_image功能:

class Player(object):
  def __init__(self):
    self.image = get_image('image1.png')

现在,如果您想一次又一次地使用同一图像,则所有图像现在都将被缓存,一旦加载并重新使用。

要在启动时预加载所有图像,您可以自己创建所有图像的列表

images = ['image1.png', 'image2.png', 'image3.png']

或简单获取特定文件夹中所有图像的文件名

import glob
images = glob.glob('*.png')

并加载一次所有图像:

# ensure all images are loaded
for image in images:
  get_image(image)

另请注意,另一个常见的瓶颈是字体渲染,这是非常昂贵的。您可以缓存Font.render使用相同技术(使用simple dict创建的字体表面

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章