为什么我的pygame游戏会随着时间的推移而变慢



我正在做一个pygame项目,但由于某种原因,我的游戏速度慢了下来:玩了几分钟后,fps只有10,而不是26(正常(。我的任务经理说它经常使用我0.4%的内存(16GB RAM(,使用量没有增加,所以可能没有内存泄漏(顺便说一句:cpu使用量很大:对于一个只有500行代码的游戏(我有Ryzen 5(,使用率为20%(。

此外:下降的fps下降得更厉害:一开始,如果我摔倒,fps和走路一样,但过了一段时间,即使走路的fps是17左右,也只有10。有人知道是什么让我的游戏随着时间的推移越来越慢吗,尤其是下降(比如:即使内存/处理器的使用量没有增加,是否有内存泄漏之类的东西可能会导致这种情况(?

这是下降代码(在玩家类中,如果玩家没有跳跃,则每个刻度都会调用此函数(:

def fall(self, tiles):
if not self.collision_from_below:
self.y_velocity += 1
for tile in tiles:
if tile.top <= self.top + (self.y_velocity ** 2)/2 and tile.top >= self.top and self.right >= tile.left and self.right <= tile.right or tile.top <= self.top + (self.y_velocity ** 2)/2 and tile.top >= self.top and self.left >= tile.left and self.left <= tile.right:
self.bottom = tile.top
self.y_velocity = 0
self.y += (self.y_velocity ** 2)/2
else:
self.y_velocity = 0

编辑:在再次使用任务管理器进行测试后,我发现cpu使用率确实有所增加,但在20%左右停止增加(从1%开始,并迅速增加(每秒+/-1%(

很可能随着时间的推移,您向容器(列表或pygame.sprite.Group(添加了越来越多的对象,但从未删除它们。容器中的对象越多,游戏就越慢。你会发射子弹,但当它们在窗口边界外时,不要把它们移走吗?你会产生敌人并不断增加敌人的数量吗?还是随着时间的推移创建其他对象?

最新更新