我想制作一个通过点按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
,并立即暂停所有节点。