ios - 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 设置值的正确方法是什么?
解决方案
推荐阅读
- php - PhpStorm 如何在 OpenCart 2.3 模型中执行 SQL 查询?
- r - 选择多个日期列并将因子变量转换为日期
- asp.net-mvc - 使用 Dapper 将单个 ResultSet 绑定到多个类
- html - Ruby Nokogiri 有序 HTML 标签
- java - 使用gson序列化具有泛型类型的类?
- arrays - 不能用参数扩展替换字符串中的空格字符
- php - 什么是正确的交易方式
- excel - 颜色编码的数据,如何使用 VBA 将它们分开?
- srcset - Srcset 问题 - 为什么我不能在浏览器中加载正确的图像?
- ios - CoocaPod:“.....”类型的值没有成员“....”,但应该有