所以我正在制作一款游戏,如果它的游戏结束,它会带你回到主菜单。如果你完成了关卡,它会重新加载GameScene(根据func switchToNewGameWithTransition)并使用新关卡继续游戏。
我遇到的问题是:如果它进入游戏结束,我会被带回主菜单。如果我再次启动游戏并完成一个级别,则GameScene无法重新加载。好吧,相反它重新加载(我从节点计数中知道这一点)但是当运行时(SKAction.sequence([delay,sceneChange]))在func中运行switchToNewGameWithTransition没有任何变化。
每次在游戏结束后按主菜单屏幕上的开始游戏时,内存也会增加约20MB。这是由于我构建代码的方式吗?
class GameScene: SKScene {
var viewController: UIViewController?
...
run(SKAction.wait(forDuration: 1)) {
self.viewController?.removeFromParentViewController()
self.viewController?.dismiss(animated: true, completion: nil)
}
...
fileprivate func switchToNewGameWithTransition(_ transition: SKTransition) {
let delay = SKAction.wait(forDuration: 1)
let sceneChange = SKAction.run({
let scene = GameScene(size: self.size)
self.view?.presentScene(scene, transition: transition)
})
run(SKAction.sequence([delay, sceneChange]))
}
}
class GameViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let skView = self.view as! SKView
let scene = GameScene(size: CGSize(width: 375, height: 667))
scene.scaleMode = .fill
scene.viewController = self
skView.presentScene(scene)
}
}