【问题标题】:Passing Data between Scenes in SpriteKit在 SpriteKit 中的场景之间传递数据
【发布时间】:2017-09-09 14:47:48
【问题描述】:

我在 Google 上搜索了大约十分钟,但其他人的建议对我不起作用。我只是想将我的游戏分数从 GameScene 传递到 GameOver。我没有使用 NSUserDefaults,但我愿意接受建议。

我在didMove 方法上方创建了我的分数变量。

var meteorScore = 0

和过渡场景

let reveal = SKTransition.reveal(with: .down, duration: 1)
let gameOver = GameOver(size: self.size)
self.view?.presentScene(gameOver, transition: reveal)

我正在尝试这样访问它

var score = GameScene(GameScene.level)

在 GameOver 中,但我得到了一些错误。如果有办法使用 NSUserDefaults 而不是这样,我很乐意切换我的代码。有什么想法吗?

【问题讨论】:

    标签: sprite-kit nsuserdefaults skscene


    【解决方案1】:

    你为什么不试试反过来呢。

    在 GameOver 中创建你的 meteorScore 变量

    var meteorScore = 0
    

    然后在转换到该场景时将变量传递给场景

    let reveal = SKTransition.reveal(with: .down, duration: 1)
    let gameOver = GameOver(size: self.size)
    gameOver.meteorScore = whateverScoreVariable
    self.view?.presentScene(gameOver, transition: reveal)
    

    这应该完全符合您的要求

    【讨论】:

    • 我收到一条错误消息:Type 'GameOver' has no member 'meteorScore'
    • 你在 GameOver 中添加了变量 var meteorScore = 0 吗?
    • @RonMyschuck,是的
    • 您将不得不在您的问题的编辑中发布您的代码。这段代码有效,我只是重新输入了一个项目并且它有效。
    【解决方案2】:

    我用 UserDefaults 解决了这个问题。对于那些刚刚开始使用 UserDefaults 的人来说,有很多非常好的视频可供学习。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-14
      • 1970-01-01
      • 1970-01-01
      • 2021-06-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多