SpriteKit: Passing variable from GameViewController to GameScene(SpriteKit:将变量从GameView控制器传递到GameScene)
本文介绍了SpriteKit:将变量从GameView控制器传递到GameScene的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我在故事板中创建了一个菜单,它通过段将一些信息传递给GameView控制器。理想情况下,我可以使用该段将信息直接传递到我需要的位置,但我不确定这是不是一个选项,因为场景只是一个视图,而不是一个视图控制器。因此,我将信息传递给了GameView控制器,这很好用。但现在,我怎么才能把它传到GameScene.swft上呢?
从菜单分段到GameView控制器
func passToGame(game: String) {
performSegue(withIdentifier: "toGameSegue", sender: game)
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if let destinationVC = segue.destination as? GameViewController {
if let item = sender as? String {
destinationVC.gameInfo = item
}
}
}
GameView控制器
class GameViewController: UIViewController {
var gameInfo: String? //This works great - now how do I get it to GameScene.swift?
override func viewDidLoad() {
super.viewDidLoad()
...
推荐答案
由于其他SKNode、SKScene都有一个名为userData的istance属性,您可以使用此词典在呈现场景之前存储您想要的任何内容(此示例来自Hello WorldSprite-Kit模板):
class GameViewController: UIViewController {
var gameInfo: String?
override func viewDidLoad() {
super.viewDidLoad()
if let view = self.view as! SKView? {
// Load the SKScene from 'GameScene.sks'
if let scene = SKScene(fileNamed: "GameScene") {
// Set the scale mode to scale to fit the window
scene.scaleMode = .aspectFill
// Present the scene
scene.userData = NSMutableDictionary()
scene.userData?.setObject(gameInfo ?? "", forKey: "gameInfo" as NSCopying)
view.presentScene(scene)
}
...
要从GameScene检索值,只需执行以下操作:
override func didMove(to view: SKView) {
if let gameInfo = self.userData?.value(forKey: "gameInfo") {
print("gameInfo is :(gameInfo)")
}
...
这篇关于SpriteKit:将变量从GameView控制器传递到GameScene的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
织梦狗教程
本文标题为:SpriteKit:将变量从GameView控制器传递到GameScene
基础教程推荐
猜你喜欢
- iPhone - 获取给定地点/时区的当前日期和时间并将其与同一地点的另一个日期/时间进行比较的正确方法 2022-01-01
- NSString intValue 不能用于检索电话号码 2022-01-01
- iOS4 创建后台定时器 2022-01-01
- Android:getLastKnownLocation(LocationManager.NETWORK_PROVIDER 2022-01-01
- 如何从 logcat 中删除旧数据? 2022-01-01
- 通过重定向链接在 Google Play 中打开应用 2022-01-01
- Cocos2d iPhone 非矩形精灵触摸检测 2022-01-01
- AdMob 广告未在模拟器中显示 2022-01-01
- libGDX 从精灵或纹理中获取像素颜色 2022-01-01
- navigator.geolocation.getCurrentPosition 在 Android 浏览器上 2022-01-01
