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)
我的高分需要一些帮助。在我的 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)