2016-07-01 2 views
0

Мне нужна помощь с моим рекордом. В моем GameScene.swift я устанавливал функции Highscore, но проблема в том, что я хотел бы показать Highscore в своем GameOverScene.swift. Вот то, что я создал в GameScene.swift:Xcode Swift pass func для 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, но теперь я хотел бы показать мой в моем Рекорд 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?

+0

так badically вы тусклый t для обмена данными между двумя быстрыми файлами? –

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

в 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) 
+0

Благодарим вас за эту информацию и вашу помощь. На данный момент я всегда получаю сообщение об ошибке 1 (exc_bad_instruction). Что означает эта ошибка? – Claudio13

+0

Случилось, когда какой-то SKNode или его производный (SKShapeNode, SKSpriteNode ..) равен nil –

+0

Теперь у меня нет ошибок, но мой Highscore всегда равен 0. – Claudio13

Смежные вопросы