2017-06-02 43 views
2

我想使用NSUserdefaults保存一段简单的信息。我正在尝试保存一个SKSprite,使alpha为1.这就是我如何做的。这是为什么不节省?

第一场景:电平选择(子画面alpha是0.2) 当用户完成程度:(在电平选择编辑精灵为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") 
    } 

} 

Level One:

func di dBegin(_联系人: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 
    } 

无法弄清楚为什么它没有保存!

回答

2

基于你所展示的,你与一个名字保存它,并用不同的名称(LevelTwoUnlocked)VS(LevelTwoButton)

+0

好眼力检索它的代码,它觉得我错了,以及.. –

+0

我希望我能说它永远不会发生在我身上。 – Mozahler

+0

哇,我怎么没看到这个?谢谢你。但可悲的是,它仍然不能节省价值。我不确定为什么。我已经完成了第一级,阿尔法得到改变,退出应用程序,然后重新启动。级别选择仍然在0.2节点上显示SKsprite。为什么会这样呢? –