Xcode Swift 将函数传递给 GameOverScene

Xcode Swift pass func to GameOverScene

我的高分需要一些帮助。在我的 GameScene.swift 中,我设置了高分功能,但问题是我想在我的 GameOverScene.swift 中显示高分。这是我在 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 中显示我的高分。 我在 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 吗?

您不需要创建结构,只需创建一个名为 "Utils.swift" 的新文件即可,无需 class 声明:

Utils.swift(如您所见,没有 class 声明):

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 中不需要导入 classes,所以当你在你的 GameOverScene.swift 中调用这些函数时,例如:

let scoreLabel = showBest()
scoreLabel.text = "points are: \(getBestScore())"
scoreLabel.position = CGPointMake( CGRectGetMidX( self.frame )+90,CGRectGetMidY( self.frame )-10)
self.addChild(scoreLabel)