如何使用SpriteKit正确初始化swift ?
这编译,但我得到一个错误,一旦模拟器开始运行。"swift_reportUnimplementedInitializer"
import SpriteKit
class GameScene: SKScene {
var paddlePositionUpdate:CGPoint
init(paddlePositionUpdate:CGPoint){
self.paddlePositionUpdate = CGPoint.zeroPoint
super.init()
}
}
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)
}
}
我在使用
用另一个场景替换场景时遇到了类似的问题let gameScene = GameScene(size: self.size)
self.view.presentScene(gameScene)
和我一直得到两个错误关于初始化:
// 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初学者的一个常见问题,我希望我的临时解决方案可以帮助。