2017-03-23 9 views
1

initメソッドまたはdidMove(toView :)で、SKSceneをプログラムで設定する必要がありますか(サブノードの作成、子ノードの現在のシーンへの追加、レイアウトなど)私はSKSceneをinitメソッドまたはdidMove(toView :)でプログラムで設定する必要がありますか?

+0

の可能性のある重複[ "INIT" または "didmove" を使用していただきました!正しい方法、?](http://stackoverflow.com/questions/38567125/whats-the-correct-way -using-init-or-didmove) –

+0

は、初期化のためのものです。しかし、シーンのinitでは、self.viewはゼロです。任意の計算のビューが必要な場合は、didMove(toView :)を使用する必要があります。 – Whirlwind

答えて

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 

     } 

    } 
} 
関連する問題