如何使用SpriteKit使用swift正确初始化?
这会编译但是一旦模拟器开始运行我就会收到错误。 “swift_reportUnimplementedInitializer”
import SpriteKit
class GameScene: SKScene {
var paddlePositionUpdate:CGPoint
init(paddlePositionUpdate:CGPoint){
self.paddlePositionUpdate = CGPoint.zeroPoint
super.init()
}
}
答案 0 :(得分:2)
SKScene
的指定初始值为init(size)
,其中size
是您场景的大小。您试图使用不存在的init()
。
如果Cmd +点击SKScene
...
编辑:尝试类似
的内容class GameScene: SKScene {
var paddlePositionUpdate: CGPoint
init(size: CGSize, paddlePosition: CGPoint = CGPoint.zeroPoint){
paddlePositionUpdate = paddlePosition
super.init(size)
}
}
场景应该用尺寸初始化......
答案 1 :(得分:2)
使用
替换另一个场景时,我遇到了类似的问题let gameScene = GameScene(size: self.size)
self.view.presentScene(gameScene)
我在初始化时遇到了2个错误:
// Error #1
'GameScene' is not constructible with '(size: @lvalue CGSize)'
// Error #2
Class 'GameScene' has no initializers
要修正错误#1,只需将GameScene(size: self.size)
替换为GameScene.sceneWithSize(self.size)
错误#2似乎受到属性初始化的影响。例如,如果我写了:
class GameScene: SKScene {
var test: CGPoint
// ...
}
错误#2仍在那里。但是,如果我将var test: CGPoint
替换为var test: CGPoint!
,var test = CGPoint(0,0)
或任何其他行可能会给test
某个值,则错误#2就消失了。我搜索了指南,但发现很多类使用var test: CGPoint
这样的行。在这里我感到困惑。
这可能是Swift初学者的常见问题,我希望我的临时解决方案有所帮助。