Swift:使用NotificationCenter以编程方式从SKScene执行Segue时出现SIGABRT错误

时间:2018-04-21 19:41:49

标签: ios swift sprite-kit segue nsnotificationcenter

在我正在制作的游戏中,我在视图控制器中使用我的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都已连接,标识符与代码中的标识符相同。还有什么会让这个错误不断出现。

如果需要,我有一个我的故事板的图像,但我没有足够的声誉来发布它。

0 个答案:

没有答案