将 UIView 投射到 SKView 时线程 1 信号 SIGABRT 崩溃

Thread 1 signal SIGABRT crash when casting UIView to SKView

我在GameViewController.swift中有以下代码:

override func viewDidLoad() {
    super.viewDidLoad()

    let scene: GameScene = GameScene()

    let currentView = self.view as! SKView
    currentView.showsFPS = true
    currentView.showsNodeCount = true

    currentView.presentScene(scene)
}

它在 let currentView = self.view as! SKView. 崩溃并显示以下消息:

Could not cast value of type 'UIView' (0x1079b7e88) to 'SKView' (0x106b79718)

有人提出了类似的问题,但他们的解决方案在情节提要中。 我没有故事板,只有代码。

您遇到崩溃是因为您的 UIView(即您的 self.view)的实际类型不是 SKView。所以你不能向下转换为 SKView,因为它不是 SKView。因此,无论您在何处创建 ViewController 的视图,都必须为其分配一个 UIView。你说你没有使用故事板,所以我假设你正在以编程方式创建 ViewController 。如果是这种情况,您需要手动为 ViewController 的视图分配一个 SKView。这通常在 ViewController 的 loadView 方法中完成。你可以看到这个

的例子

只需在主 UIView 的自定义 class 下的 ViewController 文件的故事板中写入 SKView,如图所示。 enter image description here 这将简单地解决你所有的问题。