我不明白。 我正在尝试创建2D游戏,但我遇到了一个非常基本的问题。 这是我的代码:
import SpriteKit
class GameScene: SKScene {
let box: SKSpriteNode
let hero: SKSpriteNode
override init(size: CGSize){
hero = SKSpriteNode(color: UIColor.red, size: CGSize(width: size.width / 5, height: size.height / 5))
box = SKSpriteNode(color: UIColor.blue, size: CGSize(width: size.width, height: size.height))
super.init(size: size)
self.addChild(box)
self.addChild(hero)
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
override func didMove(to view: SKView) {
// Setting up the scene
}
override func update(_ currentTime: TimeInterval) {
// Called before each frame is rendered
}
Xcode向我指示以下错误:init(coder :)函数的“在super.init调用中未初始化属性'self.box'”。
然后我尝试将其替换为:
required init?(coder a Decoder: NSCoder){
fatalError("init(coder:) has not been implemented)
}
但是猜猜是什么...当我启动游戏时,它表明我有一个致命错误。 当我删除所有初始化程序时,它告诉我需要初始化程序。 您是否知道该怎么做?
答案 0 :(得分:2)
鉴于box
和hero
不是可选的,因此必须在所有初始化程序中对其进行初始化。
您已经为自定义初始化程序完成了此操作,但还需要使用编码器进行初始化,因为可以与自定义初始化程序分开调用该初始化程序。