【问题标题】:Returning To Previous Scene In Same Condition在相同条件下返回上一个场景
【发布时间】:2015-08-05 01:11:43
【问题描述】:

我有 GamePlayScene,它在结束时会删除所有节点并显示分数和重启选项。我在那个场景上还有一个按钮,可以将您带到另一个场景以显示可升级项目。我想做一个函数,在“升级项目”场景上添加一个后退按钮,让我回到结束的 GamePlay 场景。我现在拥有的代码将我返回到 GamePlay 场景,但重新启动游戏而不是显示 Game Over 文本。我已经尝试在线搜索,但我无法找到一个好的解决方案。我的代码:

GamePlayScene.m

    -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
                ...
        else if (self.restart) {
                [[GameState sharedInstance] saveState];
                if ([node.name isEqualToString:@"UpgradesButton"]){
                    UpgradeShipScene *upgradeScene = [UpgradeShipScene sceneWithSize:(self.frame.size)];
                    SKTransition *transition = [SKTransition fadeWithDuration:0.5];
                    [self.view presentScene:upgradeScene transition:transition];
                }
                ...
    }

UpgradesScene.m
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
        UITouch *touch = [touches anyObject];
        CGPoint location = [touch locationInNode:self];
        SKNode *node = [self nodeAtPoint:location];
        if ([node.name isEqualToString:@"BackButton"]){
            for (SKNode *node in [self children]){
                [node removeFromParent];
            }
            GamePlayScene *scene = [GamePlayScene sceneWithSize:self.view.bounds.size];
            SKTransition *transition = [SKTransition fadeWithDuration:0.5];
            [self.view presentScene:scene transition:transition];
        }
}

【问题讨论】:

  • 不使用SKScene 和使用SKNode 作为“假场景”有什么问题吗?然后,您可以按后退按钮,这将从父级中删除(这将是游戏结束的场景)。
  • 嗯,我没有想到,但这听起来很容易解决我的问题。感谢您的想法!
  • 太棒了!如果那是您的解决方案,请接受我发布的答案;)

标签: ios objective-c sprite-kit skspritenode skscene


【解决方案1】:

您可以将SKNode 用作“假”SKScene,然后使用SKAction 对其进行动画处理(呈现或隐藏)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-01-31
    • 1970-01-01
    • 2018-03-09
    • 1970-01-01
    • 1970-01-01
    • 2020-09-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多