【问题标题】:What is the best way to create a pause menu?创建暂停菜单的最佳方法是什么?
【发布时间】:2015-01-25 05:07:56
【问题描述】:

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

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

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

【问题讨论】:

    标签: ios objective-c sprite-kit


    【解决方案1】:

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

    诀窍是,如果您随后调用 gameLayer.paused = true,所有子节点也会暂停,因为暂停函数递归地工作。

    例如:

    斯威夫特

    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 并立即暂停所有节点。

    【讨论】:

    • 你能在objective-c中做吗
    • 好的,还有一件事:离开应用程序时如何自动打开暂停菜单
    • 你能看看我的另一个问题吗(为什么我的 SKAction 不能正常工作?)这是一个奇怪的问题,没有人回应
    【解决方案2】:

    要继续您的思路,请在更新方法中使用 BOOL,如下所示:

    -(void)update:(CFTimeInterval)currentTime {
        if(isPaused) {
            // handle only processing during a pause
        } else {
            // handle processing while not paused
        }
    }
    

    【讨论】:

    • 但是如果我们在 didSymulatePhysics、didEvaluateActions 等中有一些计算怎么办……那么我们应该检查 isPaused 是否在多个地方。有没有办法只在一个地方暂停游戏?通过暂停游戏,我正在考虑通过点击暂停按钮以及因来电而暂停。
    • @Whirlwind - 这是不言而喻的。如果您在任何其他帧更新方法中有代码,则需要实现相同的代码。如果你想暂停“游戏代码”,同时仍然能够处理暂停方法,比如按钮,那么上面是唯一的方法。
    • 我现在明白了。谢谢。
    【解决方案3】:

    在这里查看我的问题:didBecomeActive un-pauses game

    当我到达我的计算机时,我可以查看是否可以发布我的代码(在 NDA 下)。答案确实有效,我对添加计时器的评论也很有效。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-30
      • 2017-10-07
      • 1970-01-01
      • 2019-11-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多