gpt4 book ai didi

ios - 重新启动 GameViewController/GameScene

转载 作者:行者123 更新时间:2023-11-29 01:38:40 28 4
gpt4 key购买 nike

一旦我的游戏完成,我将在我的 GameViewController 中运行 self.performSegueWithIdentifier("goToGameOver", sender: nil),它通过

保存我的 GameScene
override func viewDidLoad()
{
super.viewDidLoad()

let scene = GameScene(size: view.bounds.size)
let skView = view as! SKView
skView.showsFPS = false
skView.showsNodeCount = false
skView.ignoresSiblingOrder = true
scene.scaleMode = .ResizeFill
scene.size = skView.bounds.size
skView.presentScene(scene)
}

然后,在我的 GameOverViewController 中,当用户点击我的 playAgainButton 时,它运行 self.dismissViewControllerAnimated(true, completion: nil)

但随后它又回到了我的 GameViewController/GameScene,它没有重新加载并且处于与之前相同的状态...我如何通过 ViewController 的 SKView“重新初始化”或重新呈现 GameScene?

这种问题也存在于我的商店中,当用户单击侧箭头时,它会“模态”移动到不同的 ViewController,他们会购买我的游戏内货币,但是当他们单击我的后退箭头时,我会运行 self .dismissViewControllerAnimated(true, completion: nil) 我的 UILabel 等元素与 IBOutlet 链接,没有更新游戏内货币的新数量...如果我没记错的话,那是因为 viewcontroller/scene 未重新加载。我该如何解决这两个问题?

最佳答案

您可以通过 Core Data 或使用 NSUserDefaults 保存用户状态以获取轻量级数据。当 GameScene 初始化时,GameScene 可以从本地存储加载状态。这也意味着您需要在释放 GameScene 时写入本地存储。此外,这也将解决游戏内货币问题。当用户添加了学分时,只需更新您的核心数据模型。

替代方法是使用委托(delegate)模式。定义 GameSceneGameOverViewController 中遵循的 protocolGameScene 在呈现 GameOverViewController 时不会被释放,因为 GameOverViewController 将引用 GameScene。因此,GameScene 的实例将具有由 GameOverViewController 持有的引用(以添加积分、更新标签等)。有关委托(delegate)模式的示例,请查看我的回答 here

我建议使用第一种方法,因为使用持久性将在两次启动之间保存用户状态。

关于ios - 重新启动 GameViewController/GameScene,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32685834/

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