【问题标题】:Resetting Whole Scene (Swift, SpriteKit)重置整个场景(Swift、SpriteKit)
【发布时间】:2015-04-28 02:12:17
【问题描述】:

我正在尝试为我的游戏创建一个重播按钮,但每当我回到游戏场景时,似乎什么都没有停止过。时间是负数,游戏就会崩溃。我试过了……

       if timeInt < 0 {


        //////////////
        let retryScene = RetryScene(size: self.frame.size)
        self.view?.presentScene(retryScene)
        self.removeAllChildren()
        self.removeAllActions()

        ///// end game

        timeInt = 45
    }

我认为删除所有孩子会起作用,并且重置时间也会起作用。我使用了一个每秒更新一次的函数来使时间正常工作。所以所有的功能都会继续进行,就好像场景永远不会结束一样。我该怎么办?

【问题讨论】:

    标签: ios iphone xcode swift sprite-kit


    【解决方案1】:

    我想重新开始游戏的所有时间我都在展示游戏场景。 (从头开始游戏场景)

    应该是这样的

        if (node.name == "ReplayButton") {
            var gameScene = GameScene(size: self.size)
            var transition = SKTransition.doorsCloseHorizontalWithDuration(0.5)
            gameScene.scaleMode = SKSceneScaleMode.AspectFill
            self.scene!.view?.presentScene(gameScene, transition: transition)
        }
    

    【讨论】:

    • 所有这些都会添加一个过渡。它不会重置场景。基本上我想要的是让场景表现得好像它在你输掉比赛后从未发生过一样。场面从未停止。所以如果我让它在你输掉后将时间设置回 45 并在失败的场景中等待 15 秒,时间将是 30
    • 好吧,我不知道你的代码。但每次你过渡到同一个场景时,它都是从新开始的。 DidMoveToView 正在启动,也许您应该在那里重置值?
    【解决方案2】:

    我通过停止执行更新功能的计时器来修复它。

          if time < 0 {
          timer.invalidate()
          }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-02-11
      • 2018-03-14
      • 1970-01-01
      • 2015-01-25
      • 2015-01-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多