I made a simple game where you have to dodge obstacles and collect coins. Each coin will give you 1 point. While playing the game there is a score label. How can I create a high score label that will remember the players high score even when they exit the game. I am also wondering how I can connect the high score with the game center.
我做了一个简单的游戏,你必须避开障碍,收集硬币。每个硬币给你1分。在游戏中有一个分数标签。如何创建一个高分数标签,即使玩家退出游戏也能记住他们的高分数。我也想知道如何把高分和游戏中心联系起来。
Any help would be much appreciated.
非常感谢您的帮助。
So far this is how I determine when the winner has won a game.
到目前为止,这是我如何决定谁赢了一场比赛。
func didBeginContact(contact: SKPhysicsContact) {
var firstBody = SKPhysicsBody()
var secondBody = SKPhysicsBody()
if contact.bodyA.categoryBitMask < contact.bodyB.categoryBitMask {
firstBody = contact.bodyA
secondBody = contact.bodyB
} else {
firstBody = contact.bodyB
secondBody = contact.bodyA
}
if (firstBody.categoryBitMask & UInt32(shipCategory)) != 0 && (secondBody.categoryBitMask & UInt32(obstacleCategory)) != 0 {
ship.removeFromParent()
let reveal = SKTransition.flipHorizontalWithDuration(0.5)
let scene = GameOverScene(size: self.size)
self.view?.presentScene(scene, transition: reveal)
}
if (firstBody.categoryBitMask & UInt32(shipCategory)) != 0 && (secondBody.categoryBitMask & UInt32(coinCategory)) != 0 {
coin.removeFromParent()
playerScore = playerScore + 1
playerScoreUpdate()
}
//CHANGE TO YOU WON SCENE
//CHECK TO SEE IF COINS ARE 10, THEN YOU WON
if playerScore == 10 {
let reveal = SKTransition.flipHorizontalWithDuration(0.5)
let scene = GameWonScene(size: self.size)
self.view?.presentScene(scene, transition: reveal)
}
}
EDIT
编辑
saveHighScore(100)
var score = 99
if score > highScore() {
saveHighScore(score)
println("New Highscore = " + highScore().description)
} else {
println("HighScore = " + highScore().description ) // "HighScore = 100"
}
score = 127
if score > highScore() {
saveHighScore(score)
println("New Highscore = " + highScore().description) // "New Highscore = 127"
} else {
println("HighScore = " + highScore().description )
}
EDIT 2
编辑2
func playerScoreUpdate() {
playerScorelabel.text = "Score: \(playerScore)"
}
EDIT 3
编辑3
func addHighScoreLabel() {
// Player Score
highScoreLabel.fontName = "DIN Condensed"
highScoreLabel.fontSize = 28
highScoreLabel.fontColor = SKColor.whiteColor()
highScoreLabel.position = CGPoint(x: 500, y: size.height/1.09)
highScoreLabel.text = "HighScore: \(highScore)"
addChild(highScoreLabel)
}
?
吗?
1 个解决方案
#1
2
var playerScore = 0
func playerScoreUpdate() {
let highScore = NSUserDefaults().integerForKey("highscore")
if playerScore > highScore {
NSUserDefaults().setInteger(playerScore, forKey: "highscore")
}
playerScorelabel.text = "Score: \(playerScore)"
}
playerScore = 200
playerScoreUpdate()
println( NSUserDefaults().integerForKey("highscore") ) // 200
playerScore = 180
playerScoreUpdate()
println( NSUserDefaults().integerForKey("highscore") ) // 200
playerScore = 250
playerScoreUpdate()
println( NSUserDefaults().integerForKey("highscore") ) // 250
highScoreLabel.text = "HighScore: " + NSUserDefaults().integerForKey("highscore").description
#1
2
var playerScore = 0
func playerScoreUpdate() {
let highScore = NSUserDefaults().integerForKey("highscore")
if playerScore > highScore {
NSUserDefaults().setInteger(playerScore, forKey: "highscore")
}
playerScorelabel.text = "Score: \(playerScore)"
}
playerScore = 200
playerScoreUpdate()
println( NSUserDefaults().integerForKey("highscore") ) // 200
playerScore = 180
playerScoreUpdate()
println( NSUserDefaults().integerForKey("highscore") ) // 200
playerScore = 250
playerScoreUpdate()
println( NSUserDefaults().integerForKey("highscore") ) // 250
highScoreLabel.text = "HighScore: " + NSUserDefaults().integerForKey("highscore").description