CPU 问题和 ViewController 之间的 segue 后内存被消耗
Issue with CPU and memory being consumed after a segue between ViewControllers
我在使用 segue 在碰撞时的两个不同场景之间切换时遇到问题。
我的代码目前将等待精灵碰撞,然后它将 运行:
func gameOver() {
performSegueWithIdentifier("gameOver", sender: nil)
}
如您所知,它对 gameOver 场景执行转场(模态),这是一个 ViewController 带有 UIImageView 和一个 "RETRY" 按钮,然后使用模态转场返回游戏ViewController 和我的游戏 运行 再次发生碰撞。
问题是每次检测到碰撞并且我点击 "RETRY" 时,我都可以在显示器上看到越来越多的内存和 CPU 被用完。在大约 8-10 次重试后,我还看到大约 30FPS 的损失。
我的碰撞函数是:
func collision(Bee:SKSpriteNode, Player:SKSpriteNode) {
scene?.paused = true
println("HIT")
self.viewController.gameOver()
}
我认为这个问题可能与 scene?.paused = true
有关,但我已经尝试了所有方法,只是想不出一个正确的方法来在检测到碰撞时关闭场景,并在检测到碰撞时重新启动整个游戏"RETRY" 被按下。
你说你正在使用模态转场回到新游戏?我认为问题在于您将创建新版本的游戏控制器。这就是为什么你的记忆力在上升。每次添加一个新的游戏控制器。
点击重试时,为什么不关闭重试控制器,这样它就会显示原始游戏画面。
因此要么关闭 RETRY 控制器,要么使用反向转场,这是向后转场的机制。
在“重试”按钮的操作中只需添加:
[self dismissViewControllerAnimated:YES completion:nil];
您需要在游戏结束时使您的计时器无效,这将停止计时器。
nametimer.invalidate()
我在使用 segue 在碰撞时的两个不同场景之间切换时遇到问题。
我的代码目前将等待精灵碰撞,然后它将 运行:
func gameOver() {
performSegueWithIdentifier("gameOver", sender: nil)
}
如您所知,它对 gameOver 场景执行转场(模态),这是一个 ViewController 带有 UIImageView 和一个 "RETRY" 按钮,然后使用模态转场返回游戏ViewController 和我的游戏 运行 再次发生碰撞。
问题是每次检测到碰撞并且我点击 "RETRY" 时,我都可以在显示器上看到越来越多的内存和 CPU 被用完。在大约 8-10 次重试后,我还看到大约 30FPS 的损失。
我的碰撞函数是:
func collision(Bee:SKSpriteNode, Player:SKSpriteNode) {
scene?.paused = true
println("HIT")
self.viewController.gameOver()
}
我认为这个问题可能与 scene?.paused = true
有关,但我已经尝试了所有方法,只是想不出一个正确的方法来在检测到碰撞时关闭场景,并在检测到碰撞时重新启动整个游戏"RETRY" 被按下。
你说你正在使用模态转场回到新游戏?我认为问题在于您将创建新版本的游戏控制器。这就是为什么你的记忆力在上升。每次添加一个新的游戏控制器。
点击重试时,为什么不关闭重试控制器,这样它就会显示原始游戏画面。
因此要么关闭 RETRY 控制器,要么使用反向转场,这是向后转场的机制。
在“重试”按钮的操作中只需添加:
[self dismissViewControllerAnimated:YES completion:nil];
您需要在游戏结束时使您的计时器无效,这将停止计时器。
nametimer.invalidate()