首页 > 解决方案 > swift:如何保存控制器数据以供 GameKit GameController 使用?

问题描述

我有一个初始视图控制器,它从输入中获取玩家名称,并使用 segue 转换到 GameKit GameController。

我在我的LaunchViewController中尝试了这个准备 segue 方法

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        print(usernameTextField.text) // returns users name correctly
        if let navigationVC = segue.destination as? UINavigationController, let myViewController = navigationVC.topViewController as? GameViewController{
            myViewController.playername = usernameTextField.text
        }
    }

在我的GameController中我尝试:

class GameViewController: UIViewController {

     var playername:String?

            override func viewDidLoad() {
                super.viewDidLoad()

                // Load 'GameScene.sks' as a GKScene. This provides gameplay related content
                // including entities and graphs.
                if let scene = GKScene(fileNamed: "GameScene") {

                    // Get the SKScene from the loaded GKScene
                    if let sceneNode = scene.rootNode as! GameScene? {

                        // Copy gameplay related content over to the scene
                        sceneNode.entities = scene.entities
                        sceneNode.graphs = scene.graphs

                        print(self.playername) //returns nil
                        sceneNode.userData?.setValue(self.playername, forKey: "playername")
                        print(sceneNode.userData)

     // Set the scale mode to scale to fit the window
                    sceneNode.scaleMode = .aspectFill

                    // Present the scene
                    if let view = self.view as! SKView? {
                        view.presentScene(sceneNode)

                        view.ignoresSiblingOrder = true

                        view.showsFPS = true
                        view.showsNodeCount = true
                    }
                }
            }
        }

在我的游戏场景中,我尝试从场景中访问 userData。

但是 playername 变量在 GameController 中返回 nil。

跨控制器为成员 var 设置值的正确方法是什么?

标签: iosswiftcontrollergamekit

解决方案


推荐阅读