Выход

олько моя игра SpriteKit закончилась, я хотел бы вернуться кUIKit MenuViewController, Из того, что я узнал до сих пор, используяПротокол / делегат это лучший (?) вариант, но я не смог заставить это работать. Я знаю, что протокол, вероятно, будет идти выше объявления класса дляGameViewControllerи выглядеть примерно так:

protocol GameViewControllerDelegate {
    var gameOver: Bool?
}

Но мне нужна помощь в получении доступа отGameScene И заставить его уволитьGameViewController, Ниже приведены кости приложения, на случай, если это поможет.

MenuViewController

class MenuViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
    }

    @IBAction func goToGame(_ sender: UIButton) {
        performSegue(withIdentifier: "toGameSegue", sender: sender.currentTitle)
    }

    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        if let destinationVC = segue.destination as? GameViewController {
            if let item = sender as? String {
                destinationVC.numberOfPlayers = item
            }
        }
    }
}

GameViewController

class GameViewController: UIViewController {

    var numberOfPlayers: String?

    override func viewDidLoad() {
        super.viewDidLoad()

        if let view = self.view as! SKView? {
            if let scene = SKScene(fileNamed: "GameScene") {
                scene.scaleMode = .aspectFill

                scene.userData = NSMutableDictionary()
                scene.userData?.setObject(numberOfPlayers!, forKey: "numberOfPlayers" as NSCopying)

                view.presentScene(scene)
            }
        }
    }
...

GameScene

class GameScene: SKScene {

    var howManyPlayers: String?

    override func didMove(to view: SKView) {

        if let numPlayers = self.userData?.value(forKey: "numberOfPlayers") {
            howManyPlayers = numPlayers as? String
        }

        print(howManyPlayers!)

    }
...

Эта игра SpriteKit имеет MenuViewController, GameViewController и GameScene. Когда вы нажимаете кнопку из MenuViewController, данные отправляются через segue в GameViewController. Перед тем как GameViewController представляет GameScene, он сохраняет данные в переменной userData сцены, чтобы GameScene мог получить к ней доступ. В этом примере это количество игроков.

Ответы на вопрос(1)

Ваш ответ на вопрос