iOS&;SpriteKit-重新启动游戏后的低fps

iOS&;SpriteKit-重新启动游戏后的低fps,ios,iphone,sprite-kit,skscene,Ios,Iphone,Sprite Kit,Skscene,我创建了一个简单的iPhone游戏,用户在失去游戏后被重定向到另一个视图,可以点击“重新开始”再次玩 当游戏开始时,它运行平稳,每秒60帧左右,当他失去游戏并重新开始时,问题就开始了 GameViewController.swift override func viewDidLoad() { super.viewDidLoad() if let scene = GameScene(fileNamed:"GameScene") { /*

我创建了一个简单的iPhone游戏,用户在失去游戏后被重定向到另一个视图,可以点击“重新开始”再次玩

当游戏开始时,它运行平稳,每秒60帧左右,当他失去游戏并重新开始时,问题就开始了

GameViewController.swift

override func viewDidLoad() {
        super.viewDidLoad()



        if let scene = GameScene(fileNamed:"GameScene") {
            /*
               ... some code ...
            */

            scene.gameOverFunc = gameOverScreen

            skView.presentScene(scene)
        }
    }

func gameOverScreen(){

        let skView = self.view as! SKView
        skView.presentScene(nil)

        dispatch_async(dispatch_get_main_queue()){
            self.performSegueWithIdentifier("gmov", sender: self)
        }
    }
func gameOver(){
        /*
           ... some code ...
        */

        if let gmovFunc = gameOverFunc {
            gmovFunc()
        } 

    }


override func update(currentTime: CFTimeInterval) {
        gameOver()
    }
游戏场景。swift

override func viewDidLoad() {
        super.viewDidLoad()



        if let scene = GameScene(fileNamed:"GameScene") {
            /*
               ... some code ...
            */

            scene.gameOverFunc = gameOverScreen

            skView.presentScene(scene)
        }
    }

func gameOverScreen(){

        let skView = self.view as! SKView
        skView.presentScene(nil)

        dispatch_async(dispatch_get_main_queue()){
            self.performSegueWithIdentifier("gmov", sender: self)
        }
    }
func gameOver(){
        /*
           ... some code ...
        */

        if let gmovFunc = gameOverFunc {
            gmovFunc()
        } 

    }


override func update(currentTime: CFTimeInterval) {
        gameOver()
    }
我已将“游戏结束”屏幕设置为GameViewController。 每玩一次新游戏,游戏的性能就会下降。
在进入“游戏结束”屏幕之前,我是否必须销毁SKScene或其他东西的实例?

从GameOver到GameViewController的过程将创建另一个实例。视图控制器和场景的。所以你的表现会下降。您需要
展开该序列,而不是使用
performsgue
创建ViewController的新实例

这可能会让您感兴趣:以下是一个教程,解释了这一点: