gpt4 book ai didi

ios - 游戏在转到 gameOver Viewcontroller 后重新启动

转载 作者:搜寻专家 更新时间:2023-10-31 22:48:12 24 4
gpt4 key购买 nike

我的 sprite kit 游戏有问题,它在我使用后立即重新启动一个模型 segue 到我的 gameoverviewcontroller。
每次重新启动游戏后,fps 也会除以 2。
所以我实际上需要一种在使用 segue 后删除游戏的方法。
我试过 self.dismissViewControllerAnimated(true, completion: nil) 但我真的不知道我应该放在哪里。

我的 Storyboard 中有 3 个 View Controller ,第一个使用带有模态转场的按钮到第二个我玩游戏场景的按钮。

override func viewWillLayoutSubviews() {
super.viewWillLayoutSubviews()
print("start vc")

// Configure the view.
let skView = self.view as! SKView
skView.showsFPS = true
skView.showsNodeCount = true
skView.multipleTouchEnabled = true

/* Sprite Kit applies additional optimizations to improve rendering performance */
skView.ignoresSiblingOrder = true

/* Set the scale mode to scale to fit the window */
Scene = GameScene(size: skView.bounds.size)
Scene.scaleMode = .AspectFill
Scene.viewController = self

skView.presentScene(Scene)
}

最后当玩家死亡时我在游戏场景中使用它。swift

self.viewController?.performSegueWithIdentifier("GameOver", sender: self.viewController!)

这在 gameviewcontroller.swift 中

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "GameOver" {
let destViewController: GameOverViewController = segue.destinationViewController as! GameOverViewController
destViewController.Score = Scene.Score
destViewController.screenShot = Scene.image
print("segue")
Scene.viewController = nil
}
}

转到第三个 View Controller 。

现在我已经把多个打印命令扔掉了我的代码。
我看到游戏在 segue 完成后自动重新启动。有没有人知道我如何解决这个问题或知道我应该如何使用 dismiss 函数。

谢谢你的问候

最佳答案

viewWillLayoutSubviews 即使切换到另一个 View Controller ,当前 View Controller 也会被调用。

所以在你的情况下保护 View ,这样场景就不会被创建两次(因此,游戏重新启动):

 override func viewWillLayoutSubviews() {
super.viewWillLayoutSubviews()
print("start vc")

// Configure the view.
let skView = self.view as! SKView
if skView.scene == nil { // This check makes sure we won't create the scene twice
skView.showsFPS = true
skView.showsNodeCount = true
skView.multipleTouchEnabled = true

/* Sprite Kit applies additional optimizations to improve rendering performance */
skView.ignoresSiblingOrder = true

/* Set the scale mode to scale to fit the window */
Scene = GameScene(size: skView.bounds.size)
Scene.scaleMode = .AspectFill
Scene.viewController = self

skView.presentScene(Scene)
}
}

关于ios - 游戏在转到 gameOver Viewcontroller 后重新启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33464960/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com