致命错误:在创建SKSpriteNode时解开可选值时出乎意料的发现



我想在玩家触摸屏幕时做游戏,在屏幕上显示了宝石,但是我有错误的致命错误:在解开可选值时出乎意料地发现了无。如何修复它?

我这样做:

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:致命错误:在第三行上解开可选值

时出乎意料地找到了无nil

图像是否添加到您的项目中?是在资产目录中吗?

如果是这样,请尝试访问它

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。

相关内容

最新更新