2016-04-14 12 views
0

Yüksek puan aldığım bir spritekit oyunum var. NSUser Default kullanıyor. Ama ben yüksek puanlar 2 olsun, ve sonra ben uygulamayı tamamen kapatıyorum, ve sonra onu açmak için benim yüksek puanlar 2 gösterir, ve bir puan olarak bir tane olsun. 2 olarak kalır. Ancak, uygulamayı tekrar kapatıp açın, yüksek puanı 1 gösterir. Neden bunu yapıyor? Bu benim kodum. If koşulu çalışmıyor mu? Not: Bu sadece Highscore koduna kadar daraltılır. Skor puanım yukarı ve aşağı devam ediyor. Swift SpriteKit

import SpriteKit 

//In the DidMoveToView function 
if let Highscore1 = defaults.stringForKey("Highscore"){ 
    HighScoreLabel.text = "HIGHSCORE: \(Highscore1)" 
} 
//In the touches began func 
//Making what happens when the User Fails and a new highscore is achieved 

if Score > highscore { 

    defaults.setObject("\(Score)", forKey: "Highscore") 

} 

peşin

+0

Bunu iOS8'de yapmanız gerekip gerekmediğini hatırlamıyorum, ancak her durumda çağrılmayı senkronize ediyor mu? Belki de ne olacağını görmek için setObject'den hemen sonra ekleyin. –

cevap

1

Sorun, NSUserDefaults gelen yüksek puanlar okuma ve HighScoreLabel bunu gösteriyor ise teşekkür ederiz.

if Score > highscore { 
    defaults.setObject("\(Score)", forKey: "Highscore") 
} 

Sen gerekir: o Uygulamayı açtığınızda aşağıdaki koşul doğru yapar 0'dan kalır ve ilk defa oynadığı yüzünden Ama, highscore değişkende/saklanan değeri atanır vermedi yüksek puan okuma kısmı gibi değiştirin:

if let Highscore1 = defaults.stringForKey("Highscore") { 
    HighScoreLabel.text = "HIGHSCORE: \(Highscore1)" 

    // Storing current high score to variable 
    highscore   = Int(Highscore1) 
} 
İlgili konular