我正在用python pyglet创建一个简单的项目,涉及到在屏幕上绘制大量实体和图块,通常一次绘制约77K的图块,为此,我使用了两批,并将每个图块作为一个精灵,它在屏幕上的x,y位置就是它在世界上的x,y位置。
当我尝试在其中实现某种侧向滚动功能时,问题就来了,为了避免问一个XY问题,我认为我应该问这样做的最佳方法是什么。
我尝试了多种方法来提高性能:
相机类update()每次调用都会被调用
class Camera:
def __init__(self):
self.world_sprites = []
self.world_x = 0
self.world_y = 0
def add_sprite(self, spr: tools.WorldSprite):
self.world_sprites.append(spr)
def update(self):
for spr in self.world_sprites:
spr.update_camera(self)
WorldSprite类内部的update_camera方法
def update_camera(self, cam):
self._x = self.px - cam.world_x
self._y = self.py - cam.world_y
self._update_position()
它有效,只是非常非常慢。 抱歉,这是一个大问题。