如何从我的SKScene创建Segue到另一个UIViewController?
问题描述:
我目前正在做一个非常基本的“庞”游戏。我有应用程序正在运行,但我想添加一个游戏画面。一旦用户或计算机达到5分,我想要显示转场场景。如何从我的SKScene创建Segue到另一个UIViewController?
这是我的分数更新功能:
func addScore(playerWhoWon: SKSpriteNode) {
ball.position = CGPoint(x: 0, y: 0)
ball.physicsBody?.velocity = CGVector(dx: 0, dy: 0)
if playerWhoWon == main {
score[0] += 1
if score[0] >= 5 {
// call a function that segues to endGame()
}
let when = DispatchTime.now() + 0.7
DispatchQueue.main.asyncAfter(deadline: when) {
self.ball.physicsBody?.applyImpulse(CGVector(dx: 15, dy: 15))
}
} else if playerWhoWon == enemy {
score[1] += 1
if score[1] >= 5 {
// call a function that segues to endGame()
}
let when = DispatchTime.now() + 0.7
DispatchQueue.main.asyncAfter(deadline: when) {
self.ball.physicsBody?.applyImpulse(CGVector(dx: -15, dy: -15))
}
}
topLbl.text = "\(score[1])"
btmLbl.text = "\(score[0])"
}
我希望能够调用“残局”的功能,这塞格斯到“你赢了”或“你输”的UIViewController,根据结果的游戏。任何帮助非常感谢,谢谢!
答
在你SKScene,声明视图控制器
var viewController: UIViewController?
在你的故事板,创建承载您的SKScene和你的游戏在视图控制器视图控制器之间的SEGUE。给它一个标识符。
不管你想要去Segue公司,称这(更换“标识符”与您的标识符):
viewController?.performSegue(withIdentifier: "identifier", sender: viewController)
我宣布视图控制器,并创建了我的SKScene VC和我youWinVC之间的SEGUE。然后,我在我的youWin函数中发布了segue命令,该函数显示屏幕上的获胜游戏: func youWin(){ self.ball.physicsBody?.isDynamic = false viewController?.performSegue(withIdentifier:“youWinSegue”,sender: viewController) } //我试图确定segue本身和youWin视图控制器,但仍然无法工作。有什么建议么? –
你可以尝试self.viewController?.performSegue(withIdentifier:“identifier”,sender:self.viewController)另外,确保你在你的代码中调用了这个函数。 –
我将自我前缀添加到视图控制器,但没有效果。在我的if score> = 5语句中,我称之为youWin函数。它的工作原理是因为物理调整线(在我之前评论的segue命令中)在游戏结束时停止了球,它不会延续到新的VC。 –