2017-06-02 22 views
2

Ich versuche, eine einfache Information mit NSUserdefaults zu speichern. Ich versuche einen SKSprite zu speichern, um ein Alpha von 1 zu haben. Hier ist, wie ich es mache.Warum spart das nicht?

Erste Szene: Level wählen (Sprite alpha 0.2) Wenn der Benutzer-Ebene ergänzt:

GameViewController (edit Sprite in Level auswählen man gleich):

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 
} 

Level auswählen:

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") 
    } 

} 

Ebene eins:

func di dBegin (_ Kontakt: 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 Sterne:

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) 



    } 

Für mich sieht es aus wie die Informationen speichern soll. Was mache ich falsch? Ich habe auch die Schlüssel eingestellt, um abzurufen:

Kann nicht herausfinden, warum es nicht spart!

Antwort

2

Basierend auf dem Code, den Sie gezeigt haben, können Sie es mit einem Namen speichern, und es mit einem anderen Namen (LevelTwoUnlocked) vs (LevelTwoButton)

+0

gutes Auge Abrufen, fühlte es sich auch für mich falsch .. –

+0

Ich wünschte, ich könnte sagen, es passiert mir nie. – Mozahler

+0

WOW, wie habe ich das nicht gesehen? Danke dafür. Aber leider spart es immer noch nicht den Wert. Ich bin mir nicht wirklich sicher warum. Ich habe die erste Stufe abgeschlossen, Alpha wird geändert, die App beendet und dann neu gestartet. Die Level-Auswahl zeigt immer noch den SKsprite an einem Knoten von 0,2. Warum kann das sein? –