【问题标题】:Sprite Kit restarting the last levelSprite Kit 重新开始最后一关
【发布时间】:2014-07-25 20:37:31
【问题描述】:

我有一个游戏,其中我有不同的关卡作为不同的 SKScene(LevelOne、LevelTwo 等...)

当你在关卡失败时,我使用 presentScene: 来显示 Game Over 菜单,这是一个 SKScene 并且有一个名为重新启动关卡的按钮。

我的问题是我不知道如何将失败的关卡呈现为场景,因为我不知道如何将失败的关卡数据发送到游戏结束场景。

我想出的一个解决方案(因为有 50 多个关卡)是倒回到我进行过渡的场景,但我不知道该怎么做。

举个例子:我在8级。我失败了。

 GameOver *gameOver = [[GameOver alloc] initWithSize:self.scene.size];
    SKTransition *transition = [SKTransition fadeWithColor:[UIColor whiteColor] duration:2];
    [self.view presentScene:gameOver transition:transition];

我使用这种方法来呈现 GameOver 场景。我在游戏结束场景中有一个名为重新启动的按钮,它使用选择器执行以下方法

-(void)restartLevel{

      LevelEight *newScene = [[LevelEight alloc] initWithSize:self.scene.size];
    SKTransition *transition = [SKTransition fadeWithColor:[UIColor whiteColor] duration:2];
    [self.view presentScene:newScene transition:transition];
}

问题是当我们在第 8 级失败时需要生成代码,所以我需要一种机制来发送该级别数据。

我想过使用 self.scene.userData 和它的 objectForKey: 方法,但我不知道如何将它应用到这种情况。

【问题讨论】:

  • 这里的核心问题是为每个级别创建一个子类。相反,您应该提供一个级别类,该类根据您使全局可用的当前级别编号执行任何特定于级别的操作。
  • scene.userData = @{@"level": @8};?这还不够吗?
  • 我最终使用了 duci9y 的建议。 LearnCocos2D,可惜这个游戏的关卡非常不同,所以每个关卡都必须是另一个场景,尽管代码非常模块化。

标签: ios sprite-kit nsuserdefaults


【解决方案1】:

好的,这是一个可能对您有所帮助的解决方案,通过这种方式将您的关卡编号发送到 GameOver 场景类:

GameOver *gameOver = [[GameOver alloc] initWithSize:self.scene.size levelNumber:currentLevelNumber];
    SKTransition *transition = [SKTransition fadeWithColor:[UIColor whiteColor] duration:2];
    [self.view presentScene:gameOver transition:transition];

并在 GameOver 场景中编写一个 switch 语句来检查您通过的关卡编号(currentLevelNumber):

switch (currentLevelNumber) {
    case 1:
        LevelOne *newScene = [[Levelone alloc] initWithSize:self.scene.size];
        SKTransition *transition = [SKTransition fadeWithColor:[UIColor whiteColor] duration:2];
        [self.view presentScene:newScene transition:transition];
        break;
    case 2:
        LevelTwo *newScene = [[LevelTwo alloc] initWithSize:self.scene.size];
        SKTransition *transition = [SKTransition fadeWithColor:[UIColor whiteColor] duration:2];
        [self.view presentScene:newScene transition:transition];
        break;

科莱凝胶:)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多