1
我應該在init方法還是在didMove(toView :)中以編程方式設置SKScene(即創建子節點,將子節點添加到當前場景,佈局等)?我應該在init方法中還是在didMove(toView :)中以編程方式設置SKScene?
我應該在init方法還是在didMove(toView :)中以編程方式設置SKScene(即創建子節點,將子節點添加到當前場景,佈局等)?我應該在init方法中還是在didMove(toView :)中以編程方式設置SKScene?
是的,節點的初始化應該放在「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
}
}
}
的可能的複製[請告訴我正確的方式,使用 「初始化」 或者 「didmove」?](http://stackoverflow.com/questions/38567125/whats-the-correct-way -using-init-or-didmove) –
inits是用於初始化的。但在場景的init中,self.view是零。如果你需要任何計算的視圖,你應該使用didMove(toView :) – Whirlwind