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设备不会在屏幕上启动活动 2022-01-01
- 如何检查发送到 Android 应用程序的 Firebase 消息的传递状态? 2022-01-01
- 用 Swift 实现 UITextFieldDelegate 2022-01-01
- Android - 我如何找出用户有多少未读电子邮件? 2022-01-01
- 想使用ViewPager,无法识别android.support.*? 2022-01-01
- MalformedJsonException:在第1行第1列路径中使用JsonReader.setLenient(True)接受格式错误的JSON 2022-01-01
- 使用自定义动画时在 iOS9 上忽略 edgesForExtendedLayout 2022-01-01
- android 4中的android RadioButton问题 2022-01-01
- Android viewpager检测滑动超出范围 2022-01-01
- Android - 拆分 Drawable 2022-01-01
 
				 
				 
				 
				