Objective c 前一个场景正在呈现,但未调用当前场景。它就像是在我的新场景的背景下运行

Objective c 前一个场景正在呈现,但未调用当前场景。它就像是在我的新场景的背景下运行,objective-c,sprite-kit,skscene,Objective C,Sprite Kit,Skscene,因此,MyScene是您在开始游戏时显示的主页。在选择地图并在游戏中失败后,如果您按下按钮返回主页并直接返回到游戏的地图部分,我单击的地图将随机加载到视图中。任何帮助都会很好,我不会出错,因为它只是加载到视图并开始游戏 好的,这是主页场景中的代码,它将您发送到sections屏幕 `SKView *skView = (SKView *) self.view; SKScene *scene = [MyScene sceneWithSize:skView.bounds.

因此,MyScene是您在开始游戏时显示的主页。在选择地图并在游戏中失败后,如果您按下按钮返回主页并直接返回到游戏的地图部分,我单击的地图将随机加载到视图中。任何帮助都会很好,我不会出错,因为它只是加载到视图并开始游戏

好的,这是主页场景中的代码,它将您发送到sections屏幕

       `SKView *skView = (SKView *) self.view;
        SKScene *scene = [MyScene sceneWithSize:skView.bounds.size];
        scene.scaleMode = SKSceneScaleModeAspectFill;
        [skView presentScene:scene];`
然后,拾取第一个部分后,将过渡到viewcontroller,并将所有贴图加载到其中

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
//Called when a touch begins
UITouch *touch = [touches anyObject];
CGPoint location = [touch locationInNode:self];
SKNode *node = [self nodeAtPoint:location];

if([node.name isEqualToString:@"playButton"])
{

    SKView *skView = (SKView *) self.view;
    SKScene *scene = [SectionsScreen sceneWithSize:skView.bounds.size];
    scene.scaleMode = SKSceneScaleModeAspectFill;
    [skView presentScene:scene];
}
}
这是向那个的过渡

拾取贴图后,将过渡到此处的场景

-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
UITouch *touch = [touches anyObject];
CGPoint location = [touch locationInNode:self];
SKNode *node = [self nodeAtPoint:location];
node.xScale = 1;
node.yScale = 1;
for (SKSpriteNode *label in self.sectionNumAra)
{
    if([[@"section" stringByAppendingString:label.name] isEqualToString:node.name])
    {
        label.xScale = 1;
        label.yScale = 1;
    }
}

if([node.name isEqualToString:@"section1"])
{
    [[NSNotificationCenter defaultCenter] postNotificationName:@"closeScene"         object:nil];
    MainViewController *main = [[MainViewController alloc]init];
    UIViewController *vc = self.view.window.rootViewController;
    [vc presentViewController: main animated: YES completion:nil];
}

到目前为止一切都很好。。。现在,一旦“游戏结束警报”弹出,如果您选择返回到分区屏幕(这是一个场景),您可以返回那里。但在单击分区后,您将不允许进入。我会将上一个地图或上一个视图控制器加载到该场景上。

[[NSNotificationCenter defaultCenter]postNotificationName:@”closeScene“对象:无]


这就是问题所在。我只是在其他场景之上呈现场景。需要通过发布通知从层次结构中删除场景。问题解决了!

这里的代码显然有效。我们需要更多的帮助。检查您是否在viewWillLayoutSubviews中呈现场景-如果知道此方法将运行同样,每次视图调整大小或旋转时
SKView *skView = (SKView *) self.view;
SKScene *scene = nil;
//Continue to make if statements to open the correct map.
if([[GameData sharedGameData].mapChosen isEqualToString:@"FirstMap"])
{
    scene = [FirstMap sceneWithSize:skView.bounds.size];
}
scene.scaleMode = SKSceneScaleModeAspectFill;
[skView presentScene:scene];