为什么这不节约?

时间:2017-06-02 00:38:20

标签: swift3

我正在尝试使用NSUserdefaults保存一条简单的信息。我正在尝试将SKSprite保存为alpha为1.这就是我的工作方式。

第一个场景:等级选择(精灵alpha为0.2) 当用户完成Level :(在Level Select中编辑精灵等于1)

GameViewController:

override func viewDidLoad() {
    super.viewDidLoad()

    if let view = self.view as! SKView? {
        // Load the SKScene from 'GameScene.sks'
        if let scene = levelselectscene {
            // Set the scale mode to scale to fit the window

            scene.scaleMode = .fill



            // Present the scene
            view.presentScene(scene)
        }

        view.ignoresSiblingOrder = true

        view.showsFPS = true
        view.showsNodeCount = true
    }
}

override var shouldAutorotate: Bool {
    return true
}

等级选择:

 override func didMove(to view: SKView) {

    if unlockLevelTwoButton == true {
        levelselectscene?.childNode(withName: "LevelTwoButton")?.alpha = 1
           UserDefaults.standard.set(unlockLevelTwoButton, forKey: "LevelTwoUnlocked")
        print("I got this far")
    }

}

第一级:

func didBegin(_ contact:SKPhysicsContact){

    var bodyA = contact.bodyA
    var bodyB = contact.bodyB
    let threeStars = SKScene(fileNamed: "LevelCompleted3Star")

    let fadeAction = SKAction.fadeAlpha(by: 1, duration: 0.45)






    if bodyA.categoryBitMask == 1 && bodyB.categoryBitMask == 2 || bodyA.categoryBitMask == 2 && bodyB.categoryBitMask == 1{
        print("TEST")
        levelOneCompleted() //islevelonecompleted 
       unlockLevelTwoButton = true
        //3 stars
        threeStars?.scaleMode = .fill
        self.view?.presentScene(threeStars!, transition: .fade(withDuration: 0.3))



}

3星:

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



    if isLevelOneCompleted == true{
        unlockLevelTwoButton = true
        UserDefaults.standard.set(isLevelOneCompleted, forKey: "LevelOne")

        UserDefaults.standard.synchronize()
        levelselectscene?.scaleMode = .fill
        levelselectscene?.childNode(withName: "levelTwoButton")?.alpha = 1
        self.view?.presentScene(levelselectscene)



    }

对我来说,看起来信息应该保存。我究竟做错了什么?我也设置了要检索的键:

 if let z = UserDefaults.standard.object(forKey: "LevelTwoButton")
    {
        unlockLevelTwoButton = z as! Bool
    }

无法弄清楚它为什么不能保存!

1 个答案:

答案 0 :(得分:2)

根据您显示的代码,您将使用一个名称保存它,并使用其他名称(LevelTwoUnlocked)vs(LevelTwoButton)检索

相关问题