2017-06-02 14 views
2

NSUserdefaultsを使用して簡単な情報を保存しようとしています。私は1のアルファを持つSKSpriteを保存しようとしています。ここで私はそれをやっている方法です。なぜ保存しないのですか?

最初のシーン:ユーザーがレベルを完了すると、レベル選択 (スプライトアルファは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") 
    } 

} 

レベル1:

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

あなたが示されたコードに基づいて、あなたは一つの名前で保存され、および(LevelTwoButton)対別の名前(LevelTwoUnlocked)でそれを取り出す

+0

グッド目、それは同様に私に間違っていると感じました。.. –

+0

私はそれが私に起こることはないと言いたいと思う。 – Mozahler

+0

どのように私はこれを見ていないでしたか?ありがとう。しかし残念なことに、それはまだ値を保存していません。なぜ私は本当にわからない。私は最初のレベルを完了し、アルファは変更され、アプリケーションを終了し、再起動します。レベルセレクトではまだ0.2のノードにSKスプライトが表示されます。なぜこれができますか? –

関連する問題