一个孩子可以在Sprite Kit中拥有多个父母吗?

use*_*196 3 objective-c ios sprite-kit

我正在制作一个Sprite-Kit游戏,我有一个显示所有级别的菜单.我创建了一个锁定的图像,我希望在锁定的级别上显示,下面是代码:

SKSpriteNode *locked = [SKSpriteNode spriteNodeWithImageNamed:@"Locked.png"];
locked.position = CGPointMake(0, 0);
locked.zPosition = 2.0;
locked.size = CGSizeMake(20, 20);
Run Code Online (Sandbox Code Playgroud)

然后我想在所有级别上显示它,直到它们被解锁.这是代码:

SKSpriteNode *level2 = [SKSpriteNode spriteNodeWithColor:[SKColor redColor] size:CGSizeMake(40, 40)];
level2.position = CGPointMake(CGRectGetMidX(self.frame)-75, CGRectGetMidY(self.frame)+100);

[level2 addChild:locked];

[_levels addObject:level2];
[self addChild:level2];
Run Code Online (Sandbox Code Playgroud)

但是当我试图在第三级显示它时:

SKSpriteNode *level3 = [SKSpriteNode spriteNodeWithColor:[SKColor redColor] size:CGSizeMake(40, 40)];
level3.position = CGPointMake(CGRectGetMidX(self.frame)-30, CGRectGetMidY(self.frame)+100);

[level3 addChild:locked];

[_levels addObject:level3];
[self addChild:level3];
Run Code Online (Sandbox Code Playgroud)

我遇到了一个错误,因为已经锁定了父母.

孩子可以有多个父母吗? 如果是这样我哪里错了?

Jes*_*sak 5

A SKNode只能有一个父母.(parent毕竟,它的方法只能返回一件事.)

它也符合NSCopying,这意味着如果您需要多个方法,则可以复制节点copy.所以,你可能会尝试类似的东西[level3 addChild:[locked copy]];