gpt4 book ai didi

ios - SpriteKit : Passing variable from GameViewController to GameScene

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:33:26 25 4
gpt4 key购买 nike

我在 Storyboard 中创建了一个菜单,它通过 segue 将一些信息传递给 GameViewController。理想情况下,我可以使用该 segue 将信息直接传递到我需要的 GameScene.swift,但我不确定这是一个选项,因为场景只是一个 View 而不是 View Controller 。因此,我将信息传递给 GameViewController,效果很好。但是现在,我如何将它发送到 GameScene.swift?

从菜单转到 GameViewController

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
}
}
}

游戏 View Controller

    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 的实例属性,你可以使用这个字典来存储你想要的任何东西来呈现场景(这个例子来自“Hello World”Sprite-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)")
}
...

关于ios - SpriteKit : Passing variable from GameViewController to GameScene,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43239709/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com