时出乎意料地找到了无nil
我想在玩家触摸屏幕时做游戏,在屏幕上显示了宝石,但是我有错误的致命错误:在解开可选值时出乎意料地发现了无。如何修复它?
我这样做:
var gem : SKSpriteNode!
override func touchesBegan(_ touches: Set<UITouch>, with the event: UIEvent?) {
gem = SKSpriteNode(fileNamed: "CoolGem")!
gem.position = CGPoint(x: 0, y: 0)
addChild(gem)
gem.run(SKAction.move(to: CGPoint(x: Double.random(in: -100...100), y: Double.random(in: -100...100)), duration: 1))
}
错误告诉我以下信息:线程1:致命错误:在第三行上解开可选值
图像是否添加到您的项目中?是在资产目录中吗?
如果是这样,请尝试访问它
gem = SKSpriteNode(imageNamed: "Gem")
或者您可以确保不会是nil
if let gem = SKSpriteNode(imageNamed: "Gem") as? SKSpriteNode {
self.gem = gem
gem.position = CGPoint(x: 0, y: 0)
addChild(gem)
gem.run(SKAction.move(to: CGPoint(x: Double.random(in: -100...100), y: Double.random(in: -100...100)), duration: 1))
}
从外观上,没有名为 CoolGem
的文件。由于您使用了Untrapping(!(,因此应用程序崩溃,因为您的gem
变量为nil。