iOS&;SpriteKit-重新启动游戏后的低fps
我创建了一个简单的iPhone游戏,用户在失去游戏后被重定向到另一个视图,可以点击“重新开始”再次玩 当游戏开始时,它运行平稳,每秒60帧左右,当他失去游戏并重新开始时,问题就开始了 GameViewController.swiftiOS&;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") { /*
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的新实例 这可能会让您感兴趣:以下是一个教程,解释了这一点: