2017-03-23 19 views
1

我應該在init方法還是在didMove(toView :)中以編程方式設置SKScene(即創建子節點,將子節點添加到當前場景,佈局等)?我應該在init方法中還是在didMove(toView :)中以編程方式設置SKScene?

+0

的可能的複製[請告訴我正確的方式,使用 「初始化」 或者 「didmove」?](http://stackoverflow.com/questions/38567125/whats-the-correct-way -using-init-or-didmove) –

+0

inits是用於初始化的。但在場景的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 

     } 

    } 
} 
相關問題