我应该在init方法还是在didMove(toView :)中以编程方式设置SKScene?

时间:2017-03-23 15:43:19

标签: ios sprite-kit

我应该在init方法或didMove(toView :)中以编程方式设置SKScene(即创建子节点,将子节点添加到当前场景,布局等)?

1 个答案:

答案 0 :(得分:1)

是的,节点的初始化应该放在" init"中。这是视图的初始设置发生的地方,这涉及创建SKNodes并将此节点设置到其位置。如果您要将任何其他属性应用于节点,则可以在sceneDidMove中进行一次设置以进行查看。

例如

    class GameScene : SKScene {
       var player : SKSpriteNode?

           override init(size: CGSize) {
            let playerSize = CGSize(width: 30, height: 60)
            self.player = SKSpriteNode((texture: nil, color: .cyan, size: playerSize) 
            self.addChild(player)
            player.position.x  = size.width / 2
            player.position.y = size.height / 2
            player.zPosition = 99

            super.init(size: size)
            // you can only call functions after super.init

        }

    override func sceneDidLoad() {
    //setup Code

        }

    }
}