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


基础教程推荐
猜你喜欢
- android 应用程序已发布,但在 google play 中找不到 2022-01-01
- 如何在 UIImageView 中异步加载图像? 2022-01-01
- Android:对话框关闭而不调用关闭 2022-01-01
- 如何在 iPhone 上显示来自 API 的 HTML 文本? 2022-01-01
- 如何在没有IB的情况下将2个按钮添加到右侧的UINavigationbar? 2022-01-01
- 在 gmail 中为 ios 应用程序检索朋友的朋友 2022-01-01
- UIWebView 委托方法 shouldStartLoadWithRequest:在 WKWebView 中等效? 2022-01-01
- 当从同一个组件调用时,两个 IBAction 触发的顺序是什么? 2022-01-01
- 如何让对象对 Cocos2D 中的触摸做出反应? 2022-01-01
- Kivy Buildozer 无法构建 apk,命令失败:./distribute.sh -m “kivy"d 2022-01-01