2016-07-01 9 views
0

私はハイスコアで助けが必要です。私のGameScene.swiftではHighscore関数を設定しましたが、問題はGameOverScene.swiftにHighscoreを表示したいということです。ここで私はGameScene.swiftで作成したものです:私はGameScene.swiftでそれを示したが、今、私は私のGameOverScene.swiftで私のハイスコアを表示したい場合Xcodeスクロールパスを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 
    } 

これはかなりうまく動作します。 アップルの開発ホームページで何かを見つけましたが、うまくいきません。私も自分の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

のでbadicallyあなたがワン2つの高速ファイル間でデータを共有するには? –

+0

@UmairAfzalはい – Claudio13

答えて

0

あなたは、単にあなたがクラス宣言のない「Utils.swift」たとえばと呼ばれる新しいファイルを作成することができ、構造体を作成する必要はありません。クラスがないあなたが見ることができるよう

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 
} 

例えばクラス、このようなので、単にあなたのGameOverScene.swift通話中のこれらの関数をインポートする必要はありません。

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

この情報とあなたの助けをありがとうございます。現時点では、常にスレッド1エラー(exc_bad_instruction)が発生します。このエラーはどういう意味ですか? – Claudio13

+0

一部のSKNodeまたはその派生(SKShapeNode、SKSpriteNode ..)がnilの場合に発生します –

+0

これでエラーは発生しませんが、Highscoreは常に0です。 – Claudio13