我刚刚开始学习用iOS
编写SpriteKit
个游戏,我是编程新手(我之前只用Java和Swift编程)。我开始做我在网上找到的教程。我正试图添加一个" Game Over"场景,我一直收到错误
"线程1:EXC-BAD_INSTRUCTION(代码= EXC_I386_INVOP,子代码= 0x0)"
当我宣布gameOverLabel
常数时。一旦球击中屏幕底部,它就会在运行时编译但崩溃,这应该会触发“游戏结束”。屏幕。
import SpriteKit
let gameOverLabelCategoryName = "gameOverLabel"
class GameOverScene: SKScene {
var gameWon: Bool = false {
didSet {
let gameOverLabel = childNodeWithName(gameOverLabelCategoryName) as! SKLabelNode
gameOverLabel.text = gameWon ? "Game Won" : "Game Over"
}
}
override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) {
if let view = view {
let gameScene = GameScene.unarchiveFromFile("GameScene") as! GameScene
view.presentScene(gameScene)
}
}
}
如果有人对我可以去了解SpriteKit
,文章或视频的地方有任何建议,我会非常感激,因为我发现的大部分内容都是在Objective-C中,我在迅速的。
Here是我一直关注的教程..
答案 0 :(得分:0)
看起来你在类的范围内声明你的gameOverLabelCategoryName
常量 看起来有点奇怪,但应该没问题。它的范围将为 internal
(docs)。
在第14行:&#34; if let view = view {
&#34;您正在声明一个名为view
的常量,它会屏蔽原始self.view
实例。也许这可能会混淆编译器并导致内部崩溃?
答案 1 :(得分:0)
本教程要求您创建这个“游戏超级标签”&#39;节点并在创建此代码之前对其进行命名。检查您是否正确执行了该操作并且没有对其进行错误命名(例如,它区分大小写)。