在我正在制作的游戏中,我在视图控制器中使用我的SKScene执行一个segue到视图控制器,当你死的时候带有UIView。当我死的时候,我会做出一个动作,让场景中的红色消失。一旦完成,我希望它转到主菜单。我正在使用NotificationCenter来触发SKScene的segue。一旦alpha放大,我就使用序列SKAction来执行segue。当我运行它时,alpha会向上扩展,然后屏幕保持不变,而不是更改ViewControllers。一旦我关闭手机上的应用程序,我就会在下面列出的代码performSegue()行中收到SIGABRT错误。
编辑:控制台中的错误是: 断言失败:(*着色器),函数xglCompileShader,文件/BuildRoot/Library/Caches/com.apple.xbs/Sources/Jet/Jet-2.20/Jet/xgl_utils.mm,第24行。
GameViewController:
override func viewDidLoad() {
super.viewDidLoad()
NotificationCenter.default.addObserver(self, selector: #selector(GameViewController.doaSegue), name: NSNotification.Name(rawValue: "doaSegue"), object: nil)
//I kept out all of the code for setting up the scene
}
@objc func doaSegue(){
performSegue(withIdentifier: "show", sender: self) //The error occurs on this line
self.view.removeFromSuperview()
self.view = nil
}
Gamescene:
要查看是否由于SKAction而发生,我在没有SKAction(代码#2)的情况下尝试了它,并且加载了ViewController,但是我在视图中没有单击按钮。过了一会儿,SIGABRT错误出现在同一行。
代码#1:
let Action1 = SKAction.fadeAlpha(to: 0.75, duration: 5)
let Action2 = SKAction.run {
print("segue")
NotificationCenter.default.post(name: NSNotification.Name(rawValue: "doaSegue"), object: nil)
}
shape.run(SKAction.sequence([Action1, Action2]))
代码#2:
// let Action2 = SKAction.run {
print("segue")
NotificationCenter.default.post(name: NSNotification.Name(rawValue: "doaSegue"), object: nil)
// }
// shape.run(SKAction.sequence([Action1, Action2]))
如何停止收到此错误。我确保所有segue都已连接,标识符与代码中的标识符相同。还有什么会让这个错误不断出现。
如果需要,我有一个我的故事板的图像,但我没有足够的声誉来发布它。