2016-07-01 13 views
0

Ich brauche Hilfe mit meinem Highscore. In meinem GameScene.swift setze ich die Highscore-Funktionen, aber das Problem ist, dass ich den Highscore in meinem GameOverScene.swift zeigen möchte. Hier ist, was ich in der GameScene.swift erstellt:Xcode Swift Pass-Funktion zu GameOverScene

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 
    } 

Das funktioniert ziemlich gut, wenn ich es in der GameScene.swift zeigen aber jetzt würde Ich mag meinen Highscore in meinem GameOverScene.swift zeigen. Ich habe etwas auf Apples Entwicklungs-Homepage gefunden, aber es funktioniert nicht. Ich habe auch diese Struktur meiner GameScene.swift gesetzt:

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) 
} 

} 

jemand Haben Sie eine Idee, wie ich meine Funktion meiner GameOverScene passieren kann?

+0

so badically Sie wan t um Daten zwischen zwei schnellen Dateien zu teilen? –

+0

@UmairAfzal Ja – Claudio13

Antwort

0

Sie brauchen nicht eine Struktur zu machen, einfach können Sie eine neue Datei zum Beispiel „Utils.swift“ ohne Klassendeklaration genannt erstellen:

Utils.swift (wie Sie es sehen können, nicht Klasse Erklärung):

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 
} 

in Swift gibt es keine Notwendigkeit Klassen zu importieren, so einfach, wenn Sie in Ihrem GameOverScene.swift Aufruf sind diese Funktionen wie das zum Beispiel:

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

Vielen Dank für diese Informationen und Ihre Hilfe. Im Moment bekomme ich immer einen Thread 1 Fehler (exc_bad_instruction). Was bedeutet dieser Fehler? – Claudio13

+0

Happened, wenn einige SKNode oder es abgeleitet ist (SKShapeNode, SKSpriteNode ..) ist Null –

+0

Jetzt bekomme ich keine Fehler, aber meine Highscore ist immer 0. – Claudio13