在我的SpriteKit游戏中,我有两个视图控制器。一个是我的MenuViewController,它有一个SKView/SKScene,它处理级别选择等。
然后我有了我的GameSceneViewController-里面有一个ARSKView/SKScene。当用户完成多个级别,例如,每个级别获得3颗星,然后使用“暂停”菜单返回到MenuViewController时,每个级别显示的星(显然)不会刷新。
这是因为现在,当用户想要返回MenuViewController时,我只需调用:
self.dismiss(animated: true, completion: nil)
我在想,当用户关闭GameSceneViewController时,是否有一个函数可以调用来“刷新”MenuSceneController。
最佳答案
首先将以下方法添加到MenuSceneController
class MenuSceneController: UIViewController {
func reloadScene() {
// write here your logic to reload the scene
}
}
现在当您关闭
GameSceneViewController
时,可以调用该方法class GameSceneViewController: UIViewController {
func goBackToMenu() {
guard let menuSceneController = presentingViewController as? MenuSceneController else {
debugPrint("Error, this view controller was not presented by a MenuSceneController")
return
}
self.dismiss(animated: true) {
menuSceneController.reloadScene()
}
}
}