У меня есть начальный контроллер вида, который получает имя игрока из ввода и переходов к GameKit GameController с помощью segue.
Я пробовал этот метод подготовки перехода в моем LaunchViewController
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
}
}
}
}
В моей игровой сцене я пытаюсь получить доступ к данным пользователя со сцены.
однакоПеременная playername возвращает ноль в GameController.
Как правильно установить значение для элемента var на контроллерах?