Swift,spritekit:如何在游戏结束后重启GameScene?停止滞后?
好吧,所以我在
Swift中有一个sprite kit游戏,我在游戏结束后重启我的GameScene时遇到了麻烦.
现在,当用户失去一生时,变量gameIsOver设置为true,这会暂停场景中的特定节点并启动计时器.在此计时器结束后,我移动到我的Game Over场景.从Game Over场景中,用户可以返回家中或重新开始游戏. 以下是我如何通过场景过渡到我的游戏: countdown(circle,steps: 120,duration: 5) { //Performed when timer ends self.gameSoundTrack.stop() let mainStoryboard = UIStoryboard(name: "Main",bundle: nil) let vc = mainStoryboard.instantiateViewControllerWithIdentifier("GOViewController") self.viewController!.presentViewController(vc,animated: true,completion: nil) //Resetting GameScene self.removeAllChildren() self.removeAllActions() self.scene?.removeFromParent() self.paused = true gameIsOver = false } 我在这里暂停我的场景是因为,如果我没有,当重新加载GameScene时,gameIsOver仍然设置为true并且我的应用程序崩溃.考虑到我在这里将gameIsOver设置为false,我不知道为什么会这样. 从GameScene转到我的场景游戏并回到GameScene,或者从GameScene转移到我的家庭视图控制器并回到GameScene几次后,我的fps数量下降太多以至于整个游戏都落后于游戏玩法无法实现的程度. 这让我相信,每次我在场景中展示我的游戏时,我都没有正确地移除/处理GameScene. 我每次呈现Game Over场景时如何完全重置/删除GameScene以阻止滞后? 解决方法
你的gameIsOver Bool在场景之间切换时不会保留一个值,除非你把它变成一个结构.而不是
var gameIsOver = false 它应该是 struct game { static var IsOver : Bool = false } 所以当你改变价值时,你会打电话 game.IsOver = true //if your calling it in a different View controller or scene than where you created it just put the name before it like so GameViewController.game.IsOver = true 至于过渡回你的GameScene创建一个功能 func goToGameScene(){ let gameScene:GameScene = GameScene(size: self.view!.bounds.size) // create your new scene let transition = SKTransition.fadeWithDuration(1.0) // create type of transition (you can check in documentation for more transtions) gameScene.scaleMode = SKSceneScaleMode.Fill self.view!.presentScene(gameScene,transition: transition) } 然后每当你想重置为GameScene时,只需要打电话 goToGameScene() (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |