保存最后一个关卡

时间:2018-10-13 08:03:29

标签: ios swift xcode

我在这里how save the current level读到了类似问题的答案,但是显然问题并没有在那里解决。谁能告诉我如何保存当前游戏水平?文件Level-1.json,Level-2.json,Level-3.json等中的每个级别。我是编码初学者。希望对您有所帮助。

我正在尝试在GameViewController.swift中使用它,但是当前级别仍然无法保存。我在做什么错了?

    import UIKit
    import SpriteKit
    import GameplayKit
    import AVFoundation

    class GameViewController: UIViewController {
    ...
        var currentLevelNum = 1
    ...


     override func viewDidLoad() {
        super.viewDidLoad()

        UserDefaults.standard.set(currentLevelNum, forKey: "LevelKey")

        let lastSavedLevelNum = UserDefaults.standard.object(forKey: "LevelKey")

        setupLevel(levelNum: lastSavedLevelNum as! Int)

        backgroundMusic?.play()
    }

func setupLevel(levelNum: Int) {
        let skView = view as! SKView
        skView.isMultipleTouchEnabled = false

        scene = GameScene(size: skView.bounds.size)
        scene.scaleMode = .aspectFill

        level = Level(filename: "Level_\(levelNum)")
        scene.level = level

        scene.addTiles()
        scene.swipeHandler = handleSwipe(_:)

        skView.presentScene(scene)

        beginGame()
    }

1 个答案:

答案 0 :(得分:1)

我可以从您的代码中读取到的是, 您将应用

加载视图时,将levelKey保存为UserDefaults

UserDefaults.standard.set(currentLevelNum, forKey: "LevelKey")

然后您检索

上的levelKey

UserDefaults.standard.object(forKey: "LevelKey")

但是您将检索到的号码保存在哪里? 也许您可以这样做:

let lastSavedLevelNum = UserDefaults.standard.object(forKey: "LevelKey")

然后

setupLevel(levelNum: lastSavedLevelNum)