使用SpriteKit使用swift初始化var?

时间:2014-07-05 02:02:38

标签: swift sprite-kit

如何使用SpriteKit使用swift正确初始化?

这会编译但是一旦模拟器开始运行我就会收到错误。 “swift_reportUnimplementedInitializer”

import SpriteKit

class GameScene: SKScene {

    var paddlePositionUpdate:CGPoint

    init(paddlePositionUpdate:CGPoint){
    self.paddlePositionUpdate = CGPoint.zeroPoint
    super.init()
}
}

2 个答案:

答案 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初学者的常见问题,我希望我的临时解决方案有所帮助。