我的Highscore需要一些帮助。在我的GameScene.swift中我设置了Highscore函数,但问题是我想在我的GameOverScene.swift中显示Highscore。这是我在GameScene.swift中创建的内容:
func operateOnScore(score:NSInteger) {
if getBestScore() < GameScene.score {
setBestScore(GameScene.score)
}
}
func setBestScore(score:NSInteger){
let userDefaults = NSUserDefaults.standardUserDefaults()
userDefaults.setObject(score, forKey: "bestscore")
userDefaults.synchronize()
}
func getBestScore() -> NSInteger {
let userDefaults = NSUserDefaults.standardUserDefaults()
return userDefaults.objectForKey("bestscore")!.integerValue
}
如果我在GameScene.swift中显示它,那么效果很好,但现在我想在我的GameOverScene.swift中显示我的Highscore。 我在Apple的开发主页上找到了一些东西,但它不起作用。我还将此结构设置为我的GameScene.swift:
struct HS {
func Showbest() {
let bestFinalText = SKLabelNode(fontNamed: "04b_19")
bestFinalText.fontSize = 20
bestFinalText.zPosition = 120
bestFinalText.fontColor = UIColor.blackColor()
bestFinalText.position = CGPointMake( CGRectGetMidX( self.frame )+90,CGRectGetMidY( self.frame )-10)
bestFinalText.horizontalAlignmentMode = SKLabelHorizontalAlignmentMode.Right
bestFinalText.text = NSString(format: "%d", self.getBestScore()) as String
self.addChild(bestFinalText)
}
}
有人知道如何将我的功能传递给我的GameOverScene吗?
答案 0 :(得分:0)
你不需要制作一个结构,只需你可以创建一个新的文件,例如&#34; Utils.swift&#34;没有类声明:
Utils.swift(你可以看到没有类声明):
import UIKit
import SpriteKit
func getBestScore() -> NSInteger {
let userDefaults = NSUserDefaults.standardUserDefaults()
return userDefaults.objectForKey("bestscore")!.integerValue
}
func showBest()->SKLabelNode {
let bestFinalText = SKLabelNode(fontNamed: "04b_19")
bestFinalText.fontSize = 20
bestFinalText.zPosition = 120
bestFinalText.fontColor = UIColor.blackColor()
bestFinalText.horizontalAlignmentMode = SKLabelHorizontalAlignmentMode.Right
return bestFinalText
}
在Swift中,不需要导入类,所以只需在GameOverScene.swift
调用这些函数时就可以了,例如:
let scoreLabel = showBest()
scoreLabel.text = "points are: \(getBestScore())"
scoreLabel.position = CGPointMake( CGRectGetMidX( self.frame )+90,CGRectGetMidY( self.frame )-10)
self.addChild(scoreLabel)