簡體   English   中英

Swift-將游戲得分傳遞給第二視圖控制器

[英]Swift - passing game score to second view controller

我正在嘗試將GameScene的高分傳遞給GameOverViewController 我已經成功添加了segue GameOver並且該應用程序按預期工作。

GameOVerViewController是顯示得分,廣告和重播選項。

我看過許多教程,但是我似乎碰壁了。 這是我當前的設置。

GameScene.swift包含游戲代碼

ViewController包含跟蹤廣告和橫幅廣告

GameOverViewController會顯示廣告,重播,並希望很快就會得分。

鏈接兩個視圖的segue的GameOver名稱

scoreLabelNode.text = "Score \\(score)"GameScene上顯示分數

在我的GameOVerViewController我添加了一個標簽,希望以此來顯示得分...

@IBOutlet weak var Label: UILabel!

var recevedString: String = ""

    override func viewDidLoad() {
    super.viewDidLoad()

        Label.text = recevedString

在我的GameScene我嘗試了以下功能

func segue(){

    self.viewController.performSegueWithIdentifier("GameOver", sender: viewController)
    var secondViewController: GameOverViewController = segue.destinationViewController as GameOverViewController

    secondViewController.recevedString = scoreLabelNode.text
}

不,這正確地指出以下錯誤: () -> () does not have a member named destinationViewController'

有人會知道正確的代碼來幫助發送高分數據,或者在我出錯時將我指向正確的方向。

謝謝。


更新的代碼

進行更改后,有人知道為什么分數仍不能傳遞到GameOVerViewController嗎? 我猜測didBeginContact to call the缺少一些東西didBeginContact to call the prepareForSegue`。 謝謝。

func didBeginContact(contact: SKPhysicsContact) {

    if( moving.speed > 0 ) {

        if((contact.bodyA.categoryBitMask & scoreCategory) == scoreCategory || (contact.bodyB.categoryBitMask & scoreCategory) == scoreCategory){

            score++
            scoreLabelNode.text = "Score \(score)"
        }else {

            moving.speed = 0;

//lots of game over code removed from here

            return segue()
        }

    }

}

func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    if(segue.identifier == "GameOver")
    {
        let destVC = (segue.destinationViewController as? GameOverViewController)!
        destVC.recevedString = scoreLabelNode.text
    }
}

func segue(){
    self.viewController.performSegueWithIdentifier("GameOver", sender: self)
}

我猜你需要使用prepareForSegue 嘗試這個 :

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
        if(segue.identifier == "GameOver")
        {
            let destVC = (segue.destinationViewController as? GameOverViewController)!
            destVC.recevedString = scoreLabelNode.text
        }
 }

現在您的segue()看起來像

func segue(){
    self.viewController.performSegueWithIdentifier("GameOver", sender: self)
}

希望這會有所幫助!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM