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