2017-09-09 142 views
0

我已经谷歌搜索了大约10分钟,其他人的建议都不适合我。我只是试图将我的比赛的比分从GameScene传递给GameOver。我没有使用NSUserDefaults,但我开放给它的建议。在SpriteKit中的场景之间传递数据

我在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来做到这一点,而不是像这样,我会很乐意切换我的代码。有任何想法吗?

回答

2

你为什么不以相反的方式尝试。

在GAMEOVER

var meteorScore = 0 

然后创建meteorScore变量转换到现场的时候,变量传递给现场

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

这应该做的正是你要寻找的

+0

我得到一个错误,说:类型'GameOver'没有成员'meteorScore' –

+0

你在GameOver中添加变量var meteorScore = 0吗? –

+0

@RonMyschuck,是的 –

0

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