[英]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.