Xcode Swift将func传递给GameOverScene

时间:2016-07-01 15:43:31

标签: xcode swift sprite-kit scene

我的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吗?

1 个答案:

答案 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)