我试图制作一个pygame zelda_like,它可以设置随机房间和敌人。 首先,我为每个房间打了相同的Enemy_Class,但发现它修改了整个敌人。所以我调用了函数copy.deepcopy()。因为我在Enemy_Class中声明了精灵,所以它不会起作用,所以我尝试了这个:
class Enemy(pygame.sprite.Sprite):
def __init__(self, img_list):
self.animation = 0
self.img_ref = 'img_list'
self.animation_list = []
self.img = []
self.ig = []
self.rect = []
self.mask = []
这样复制:
room_number[i].enemy1 = copy.deepcopy(enemy_list[n])
lazy_loading(room_number[i].enemy1)
Enemy_list [x]从Enemy_Class返回一个孩子。 然后lazy_loading函数应该填满所有:
def lazy_loading(sprite):
sprite.animation_list = get_lazy_loading(sprite)
sprite.img = sprite.animation_list[sprite.animation]
sprite.ig = pygame.transform.scale(sprite.img, (x, y))
sprite.rect = sprite.ig.get_rect()
sprite.mask = pygame.mask.from_surface(sprite.ig, 127)
get_lazy_loading返回曲面列表。 问题是self.img被认为是NoneType而python并不真的希望它成为一个表面...
所以问题是,在我进一步徒劳之前:有没有办法让它接受表面,或者我应该找到一种更好的方式以懒惰的方式加载它?非常感谢你。
编辑*:我得到的错误如下:
sprite.img = sprite.animation_list[sprite.animation]
TypeError: 'NoneType' object is not subscriptable