为什么我不能将SKScene添加到另一个SKScene?

我试图让这个SKScene在游戏结束时出现在场景的中间,以便前面的场景在背景中仍然可见(类似于飞扬的鸟的结尾)。 这是我希望它出现的图像:

在这里输入图像说明

到目前为止,这是我所做的代码:

在游戏场景中:

-(void)dieFrom:(SKNode*)killingDebris { _touched = YES; if (_touched == YES) { beatLevel = YES; NSLog(@"touched"); [self runAction:[SKAction sequence:@[ [SKAction runBlock:^{ [_goodSquare removeFromParent]; }], [SKAction runBlock:^{ level2Achieved = [[NSUserDefaults standardUserDefaults] integerForKey:@"newLevelAchieved"]; if (beatLevel == YES) { level2Achieved = 2; } [[NSUserDefaults standardUserDefaults] setInteger:level2Achieved forKey:@"newLevelAchieved"]; [[NSUserDefaults standardUserDefaults] synchronize]; [self removeAllChildren]; }], [SKAction waitForDuration:1.5], [SKAction runBlock:^{ [self endGame]; }], ]]]; } } -(void)endGame { [self removeAllActions]; gameOverScene *gameOverNode = [[gameOverScene alloc] initWithScore:self.score]; gameOverNode.gameScene = self; gameOverNode.position = CGPointMake(self.scene.size.width/2, -150); [self addChild:gameOverNode]; [gameOverNode runAction:[SKAction moveToY:self.scene.size.height/2 duration:0.6]]; } 

在游戏结束的头文件中:

 @class testScene; @interface gameOverScene : SKScene @property (weak, nonatomic) testScene *gameScene; -(instancetype)initWithScore:(NSInteger)score; @end 

在游戏结束的实​​现中:

 -(instancetype)initWithScore:(NSInteger)score { if (self = [super init]) { self.userInteractionEnabled = YES; self.zPosition = 5.0; SKSpriteNode *bg = [SKSpriteNode spriteNodeWithColor:[SKColor redColor] size:CGSizeMake(280, 300)]; bg.alpha = 0.6; [self addChild:bg]; } return self; } 

但是这是我在模拟器上testing时得到的结果: 在这里输入图像说明

有以下错误信息:

 2014-05-11 15:22:05.502 test2[2825:60b] SKScene: Setting the zPosition of a SKScene has no effect. 2014-05-11 15:22:05.503 test2[2825:60b] SKScene: Setting the position of a SKScene has no effect. 2014-05-11 15:22:05.504 test2[2825:60b] SKScene: Animating the position of a SKScene has no effect. 

谁能告诉我我哪里出了问题,我该如何解决? 谢谢。 请让我知道是否需要额外的信息。

谁能告诉我我哪里出了问题,我该如何解决?

从SKScene参考页面的Overview部分:

场景是Sprite Kit节点(SKNode)树中的根节点。

由于树只能有一个根,所以任何SKNode图只有一个场景。

为了解决这个问题,或者使用SKNode(显然不是SKScene)来包含游戏结束的显示。 然后可以将该节点添加到现有场景中。

将场景设想为应用程序的独立部分。 场景因function不同而不同,例如,您可以拥有主菜单场景,高分场景,游戏场景和学分场景。
他们每个人都非常不同。 场景是完整的实体,它拥有你可能想要的一切。 你不要嵌套场景。

你想做什么可以用SKNode或SKSpriteNode来完成。 只需创build新节点并将其添加到您的场景。 将它移动到一些很远的坐标(如10000,10000)。

当你想显示它只是改变坐标到你需要的。