【发布时间】:2019-07-26 18:53:10
【问题描述】:
我正在用 pygame 编写一个 2D 游戏引擎,但我在编写 spawner 类时遇到了困难。 我想要实现的是一种创建 spawner 的简单方法,例如:
bullet = Bullet()
spawner = Spawner()
spawner.set_spawn_object(bullet)
我在 set_spawn_object 中使用 copy.deepcopy
基本上我想将一个对象传递给 spawner,它应该对该对象进行深度复制并保存该副本。然后每隔 n 秒,它将通过将其复制到渲染碰撞的游戏对象的全局列表中来生成该对象。我需要一个深度复制,因为我想稍后单独修改它们(例如位置、名称、纹理)。问题是不能以这种方式复制表面。
现在我的游戏引擎中的每个对象都有自己的表面,我计划做的是将所有表面放在一个单独的类中以提高效率。这可以解决这个问题,因为我不会复制表面。但是……
假设我有一个 bullet 和一个 resource_manager 对象。 bullet 有一个指向 resource_manager.bullet_texture 的指针(它是一个 pygame.Surface)。
那我可以
bullet2=copy.deepcopy(bullet)
因为我会复制指针,而不是表面本身。
问题是python没有指针,我该怎么办?
【问题讨论】: