我只是想用skimeternode和SKSpriteNode
但我的代码第二行有错误
startfield.position = CGPoint.init(x:0,y:1200)
错误就像
“致命错误:展开可选值时意外发现nil”
两次,还有这一次
“没有frZQaeyWLUvLjeuEK43hmg的沙盒访问权限,并且没有适当的权限”
我不明白可选的概念,所以我不能解决它。。
class GameScene: SKScene {
var startfield : SKEmitterNode!
var player : SKSpriteNode!
override func didMove(to view: SKView) {
startfield = SKEmitterNode(fileNamed: "Starfield")
startfield.position = CGPoint.init(x: 0, y: 1200)
startfield.advanceSimulationTime(10)
self.addChild(startfield)
startfield.zPosition = -1
//define Player
player = SKSpriteNode(imageNamed: "shuttle")
player.position = CGPoint(x: self.frame.width/2, y: player.size.height/2 + 20)
self.addChild(player)
}
override func update(_ currentTime: TimeInterval) {
// Called before each frame is rendered
}
}
最佳答案
重新声明starfield
变量(错误地键入为startfield
?)使其允许零值:
var starfield: SKEmitterNode?
这是必需的,因为
SKEmitterNode(fileNamed:)
是一个可选的初始化程序,即可以返回nil
的初始化程序。在进一步使用此变量测试之前,如果不为零,例如使用guard
语句:guard let starfield = starfield else { return }
因为函数的其余部分现在不是零。