在 SpriteKit 中出现错误。 - 线程 1:EXC_BREAKPOINT(代码=1,子代码=0x1007351fc)

Posted

技术标签:

【中文标题】在 SpriteKit 中出现错误。 - 线程 1:EXC_BREAKPOINT(代码=1,子代码=0x1007351fc)【英文标题】:Getting an error in SpriteKit. - Thread 1: EXC_BREAKPOINT (code=1, subcode=0x1007351fc) 【发布时间】:2017-01-05 06:43:03 【问题描述】:

我正在创建一个游戏,我正在寻找某人来编辑我的代码,说明为什么会出现此错误代码:

线程 1:EXC_BREAKPOINT(代码=1,子代码=0x1007351fc)

这是我的代码:

import UIKit

import SpriteKit

class Winner: SKScene 

override init(size: CGSize) 
    super.init(size: size)

   backgroundColor = SKColor (red: CGFloat(248), green: CGFloat(248), blue: CGFloat(248), alpha: CGFloat(255)) //UIColor 

    var message = "Great Job! "
    let label = SKLabelNode(fontNamed: "AppleSDGothicNeo-Bold")
    label.text = message
    label.fontSize = 22
    label.fontColor = SKColor.blue
    self.backgroundColor = SKColor.black
    label.position = CGPoint(x: size.width / 2, y: size.height / 2)
    addChild(label)

    run(SKAction.sequence([

        SKAction.wait(forDuration: 1.0),
        SKAction.run() 

            let reveal = SKTransition.flipHorizontal(withDuration: 1.0)
            let scene = GameOver(size: self.size)

            self.view?.presentScene(scene, transition:reveal)


        
        ]))




required init?(coder aDecoder: NSCoder) 
   fatalError("init(coder:) has not been implemented")


 

【问题讨论】:

【参考方案1】:

您的问题只有几行,但我认为您的代码中应该有 2 个错误。

第一个问题(谁造成了EXC_BREAKPOINT)可能是您将第一行写在:

override init(size: CGSize) 
        super.init(size: size)
        // here there is your code

这将解释该方法的存在: required init?(coder aDecoder: NSCoder) 在你的场景类中, 但是当前场景可以使用便捷的构造函数进行初始化:

public convenience init?(fileNamed filename: String)

您在其中调用 SKS 相关文件场景。换句话说,在您的GameViewController 中您应该这样做:

if let scene = SKScene(fileNamed: "GameScene") 

代替:

let scene = SKScene(size: self.view.frame.size)

所以编译器崩溃到:

required init?(coder aDecoder: NSCoder) 
        fatalError("init(coder:) has not been implemented")

因为您的类会覆盖(然后调用)经典的 init 方法。

第二个问题是当SKScene 对象已经由SKView 对象提供时,必须调用SKTransition,因此您可以在以下位置使用您的代码:

override func didMove(to view: SKView) 
        print("GameScene")
        // here there is your code

确实,在视图呈现场景后立即调用此方法。

【讨论】:

感谢您的帮助。你能检查一下我更新的问题,它在转换到场景时从哪里得到我的错误。 这可能取决于你如何创建你的 Congratulations 类,我不知道它的代码.. 我再次更新了我的代码。你可以看到我的祝贺课。 在您的 Congratulation 课程中,您从 init 方法过渡到另一个场景:看看我对第二个问题的回答.. 那么,我应该在我的 Congratulation 类中添加 didMove 函数并打印出下一个场景吗?

以上是关于在 SpriteKit 中出现错误。 - 线程 1:EXC_BREAKPOINT(代码=1,子代码=0x1007351fc)的主要内容,如果未能解决你的问题,请参考以下文章

SpriteKit - 为啥我的游戏会随着新 iOS 版本的发布而出现错误?

Swift SpriteKit 出现场景错误

转换场景时出错? - 精灵套件

BFTask 在后台绘制 SpriteKit 对象正在锁定主线程

Spritekit 游戏崩溃(因为 SKLightNode 线程问题?)

Xcode 5 SpriteKit 粒子发射器未出现在编辑器中