繁体   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