【发布时间】: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