我想制作一个通过点按SKSpriteNode来激活的菜单,然后暂停游戏中除“恢复”和“重新启动”按钮以外的所有内容,并且在用户离开应用程序时也被激活。

我目前正在通过bool调用isPaused来执行此操作,并且所有方法仅在isPaused设置为NO时才被激活。每当触摸暂停节点时,它将设置为YES,并且一切都停止。但是,这给我带来了很多麻烦,例如,当调用didEnterBackground时,我使该方法暂停了场景,但是当您重新打开应用程序时,没有暂停菜单。

我想知道最好的方法是什么。

最佳答案

我建议使用“游戏层”节点。这就像一个 super 节点,其中包含游戏中的所有节点。

诀窍是,如果您随后调用gameLayer.paused = true,则所有子节点也将暂停,因为暂停功能是递归工作的。

例如:

Swift :

var gameLayer = SKNode()

var node1 = SKSpriteNode()
var node2 = SKSpriteNode()

var specialNode = SKSpriteNode()

gameLayer.addChild(node1)
gameLayer.addChild(node2)

gameLayer.pause = true

//node1 and node2 will pause also

Objective-C
SKSpriteNode *node1 = [SKSpriteNode new];
SKSpriteNode *node2 = [SKSpriteNode new];
SKSpriteNode *specialNode = [SKSpriteNode new];

[gameLayer addChild: node1];
[gameLayer addChild: node2];

gameLayer.paused = TRUE;

现在,您可以在任何需要的地方调用gameLayer.paused = true,并立即暂停所有节点。

10-08 05:58
查看更多