如何使用Swift更改SpriteKit中的全局整数?

如何使用Swift更改SpriteKit中的全局整数?,swift,sprite-kit,Swift,Sprite Kit,因此,我编码了一个类似的游戏,4个图像1个单词。我希望当我处于5级时,我关闭游戏并将其从我的历史记录中删除,然后再次返回游戏并按Play键,我可以在5级恢复。我尝试使用一个全局变量(LevelNumber),它是一个int,值为1,这意味着它在classLevel1:Skscene{: var levelNumber = 1 class Level1: SKScene { 在level 1的Win函数中,我将levelNumber的值设置为2(因为您完成了level 1),并保存该值: fun

因此,我编码了一个类似的游戏,4个图像1个单词。我希望当我处于5级时,我关闭游戏并将其从我的历史记录中删除,然后再次返回游戏并按Play键,我可以在5级恢复。我尝试使用一个全局变量(LevelNumber),它是一个int,值为1,这意味着它在classLevel1:Skscene{:

var levelNumber = 1
class Level1: SKScene {
在level 1的Win函数中,我将levelNumber的值设置为2(因为您完成了level 1),并保存该值:

func Win() {
    levelNumber == 2
    NSUserDefaults.standardUserDefaults().setInteger(levelNumber, forKey: "levelNumber")
}
*在主菜单场景中编辑我说:

 override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {

    if levelNumber == 1 {
    let Level = Level1(size: self.size)
    Level.scaleMode = scaleMode
    let transition = SKTransition.fadeWithDuration(0.5)
    self.view?.presentScene(Level, transition: transition)
    }

    else if levelNumber == 2{
        let Level = Level2(size: self.size)
        Level.scaleMode = scaleMode
        let transition = SKTransition.fadeWithDuration(0.5)
        self.view?.presentScene(Level, transition: transition)
    }

    else if levelNumber == 3 {
        let Level = Level3(size: self.size)
        Level.scaleMode = scaleMode
        let transition = SKTransition.fadeWithDuration(0.5)
        self.view?.presentScene(Level, transition: transition)
    }

但由于某些原因,当我按Play时,转到Level 1(不调用win函数),然后重新启动游戏并按Play。我进入Level 2,但没有赢得Level 1,为什么?

在win函数中,设置变量如下:

levelNumber = 2
而不是

levelNumber == 2

我猜您应该分配
分数
级别编号
,而不是添加到它们中

你所拥有的:

score += oldScore
levelNumber += oldlevelNumber
您可能想要的:

score = oldScore
levelNumber = oldlevelNumber

您当前的代码似乎很好…您可以再显示一些吗?您检索NSUserDefault信息的代码这是我保存我的levelNumber的AppDelegate代码:太长了,一分钟后请尝试在应用程序didFinishLaunchingWithOptions方法中声明您的oldScore和oldlevelNumber。
levelNumber
level>不同数字
。此外,变量应始终以小写字母开头。对不起,我写错了,在我的代码中它与其他代码相同,因此它是小写L。在哪里创建了
分数
?查看我的编辑,也许你可以看到我在主菜单中犯的错误Scene@LukasDomeisen我建议在继续之前重新学习一些Swift的基础知识进一步使用你的应用程序。如果你不知道
+=
=
之间的区别,或者
=
=
之间的区别,你会遇到很多问题。我几乎完成了游戏,这是我现在唯一不能放弃的事情。如果你找不到解决方案,我会找其他人来解决。@LukasDomeisen这是正确的答案。在您描述的情况下,您跳过了级别1,进入了级别2。这是因为您正在将旧分数添加到新分数中。如果您只是设置它,它将是1。如果您再次运行项目,您将处于级别3。这个answe应该适用于您
score = oldScore
levelNumber = oldlevelNumber