Ios 暂停精灵套件游戏并切换到主菜单

Ios 暂停精灵套件游戏并切换到主菜单,ios,objective-c,save,sprite-kit,transition,Ios,Objective C,Save,Sprite Kit,Transition,我正在用Xcode的精灵工具包开发一款游戏,我打算将它运到应用商店。我有一个游戏场景,其中所有对象都是SKSpritodes,并且是单个SKNode*nodePlay的子对象。其中之一是一个按钮,用于暂停游戏并打开自定义暂停菜单。在暂停菜单中,用户可以恢复、重新启动、进入设置、进入主菜单等。我想保留的一个重要特性是暂停游戏时的状态,例如执行动作的对象的级别/计时器/位置 我已经找到了几种方法来实现这一点,但我想坦率地问,是否有“最好的/首选的方法”以及原因。以下是我自己/通过研究得出的一些结论:

我正在用Xcode的精灵工具包开发一款游戏,我打算将它运到应用商店。我有一个游戏场景,其中所有对象都是SKSpritodes,并且是单个SKNode*nodePlay的子对象。其中之一是一个按钮,用于暂停游戏并打开自定义暂停菜单。在暂停菜单中,用户可以恢复、重新启动、进入设置、进入主菜单等。我想保留的一个重要特性是暂停游戏时的状态,例如执行动作的对象的级别/计时器/位置

我已经找到了几种方法来实现这一点,但我想坦率地问,是否有“最好的/首选的方法”以及原因。以下是我自己/通过研究得出的一些结论:

1) 使用两个视图控制器。第一个只运行游戏场景,暂停按钮将用户转换到第二个视图控制器,其他场景(设置场景、主场景等)将出现在该控制器中。这样,当我在第一个视图控制器上设置nodePlay.paused=true并通过弹出转换到第二个视图控制器时,当我弹出时,第一个视图控制器的状态将保持不变(包括任何SKActions的暂停)

2) 将play SKScene和pause SKScene组合为一个单独的SKScene,因此当我们暂停游戏时,当前视图将只显示一个SKNode*nodePause,其中有几个SKSpriteNode/SKLabelNode子节点作为按钮(我将设置nodePlay.pause=true,并将alpha设置为0.5,zposition=-10,以便它清晰地显示在背景中)

3) 通过以下方式存档游戏场景和场景之间的过渡:

SKScene *pauseScene = [[MyPauseScene alloc] initWithSize:self.size];
[self.view presentScene:pauseScene];
如果我们继续,我们将恢复存档的场景。我读到的一个主要问题是,它没有保存SKActions的状态(如果我使用moveBy,它将不按需要移动对象,或者如果我在持续时间内使用moveTo,对象将移动得非常缓慢……)


如果有更好的方法,我还没有列出,我真的很感谢你的建议-谢谢

1不起作用,因为您只能有一个活动skview,3是多余的和有问题的,2是通常所做的