pygame - 为什么我的游戏(使用 pygame)在我为背景设置图像后会如此滞后?
问题描述
我想要一个始终在玩家角色和敌人背后的游戏背景图片。我刚刚输入:
background = pygame.image.load("mypicture")
在我的代码顶部,在我的运行循环之前。然后我通过键入以下内容对图像进行 blit:
screen.blit(background, (0, 0))
如果我在运行循环之前对图像进行 blit,则游戏根本不会滞后,但是玩家角色在任何地方移动,都会留下一个永远不会消失的轮廓,如图所示 但是,如果我在运行循环期间对图像进行 blit,之前提到的示踪效果不会发生,而是游戏玩家运行得非常慢。
值得一提的是我的玩家角色的一些代码:
def Player(x, y):
screen.blit(PlayerImg, (x, y))
我在运行循环结束时调用该函数,就在之前
pygame.display.update
. 玩家被放置在坐标 x, y 上,这些坐标是根据键盘输入决定的。
解决方案
尝试添加转换方法:background = pygame.image.load("mypicture").convert()
。这将提高性能。更多信息在这里 [ https://www.pygame.org/docs/ref/surface.html#pygame.Surface.convert]
如果你想让你的背景刷新,你必须在循环中调用它。
推荐阅读
- json - 有没有办法在logstash中展平json数据
- laravel - Flutter Dio 在 Laravel 服务器上发送空白请求
- javascript - 我想要复选框的行索引:在表中选中。使用 deleteRow()
- excel - 将多个单元格,而不是并排复制到并排的单元格
- html - z-index 和图像定位的问题
- c# - XAttribute 创建 p0:dt 而不是 dt:dt
- python-3.x - 我可以撤销 on_command discord.py 中的命令吗?
- javascript - 无论事件监听器如何,函数都会触发
- apache-kafka - 德鲁伊:org.apache.druid.query.ResourceLimitExceededException
- c# - C# IF ELSE 在什么本地数据库上使用?