在我的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()
        }
    }
}

10-08 12:09