【发布时间】:2016-05-06 19:13:19
【问题描述】:
所以我将一个类似的游戏编码为 4 个图像 1 个单词。我希望当我例如在第 5 级时关闭游戏并将其从我的历史记录中删除,然后再次返回游戏并按播放我可以在第 5 级恢复。我尝试使用全局变量( LevelNumber) 是一个 int 值,其值为 1,这意味着它高于 classLevel1: Skscene{ :
var levelNumber = 1
class Level1: SKScene {
在级别 1 的 Win 函数中,我将 levelNumber 的值设置为 2(因为您完成了级别 1)并保存:
func Win() {
levelNumber == 2
NSUserDefaults.standardUserDefaults().setInteger(levelNumber, forKey: "levelNumber")
}
*edit 在 MainMenu 场景中我说:
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)
}
所有级别的等等。
这是 AppDelegate.swift 中的代码
import UIKit
@UIApplicationMain class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
var oldScore : Int = NSUserDefaults.standardUserDefaults().integerForKey("oldScore")
var oldlevelNumber : Int = NSUserDefaults.standardUserDefaults().integerForKey("oldlevelNumber")
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
// Override point for customization after application launch.
Score += oldScore
levelNumber += oldlevelNumber
return true
}
func applicationWillTerminate(application: UIApplication) {
// Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
NSUserDefaults.standardUserDefaults().setInteger(Score, forKey: "oldScore")
NSUserDefaults.standardUserDefaults().synchronize()
NSUserDefaults.standardUserDefaults().setInteger(levelNumber, forKey: "oldlevelNumber")
NSUserDefaults.standardUserDefaults().synchronize()
}
但是由于某种原因,当我按 Play 时,进入 Level 1(不调用 win 函数),然后重新启动游戏并按 Play 我进入 Level 2 甚至没有赢得 Level 1,为什么?
【问题讨论】:
-
LevelNumber与levelNumber不同。此外,变量应始终以小写字母开头。 -
对不起,我写错了,在我的代码中它与其他代码相同,所以它是小写 L.
-
Score是在哪里创建的? -
看看我的编辑也许你可以看到我在 MainMenu 场景中犯的一个错误
标签: swift sprite-kit