2017-10-10 14 views
2

GameSceneでsceneDidLoadとdidMove(表示:)の違いを理解できますか?シーンが提示されると、didMove(to view:) が呼び出されることがわかります。 sceneDidLoadが一度呼び出されると、シーンが初期化されます。いずれかのオーバーライドすることでsceneDidLoadを使用するタイミングv didMove(表示する:)

let borderBody = SKPhysicsBody(edgeLoopFrom: self.frame) 
    self.physicsBody = borderBody 
    physicsWorld.gravity = CGVector(dx: 0.0, dy: 0.0) 

    let testBall = SKShapeNode(circleOfRadius: 20) 
    self.addChild(testBall) 

    testBall.physicsBody = SKPhysicsBody(circleOfRadius: 
    testBall.frame.size.width/2) 
    testBall.physicsBody!.restitution = 1.0 
    testBall.physicsBody!.friction = 0.0 
    testBall.physicsBody!.angularDamping = 0.0 
    testBall.physicsBody!.linearDamping = 0.0 

    testBall.physicsBody!.applyImpulse(CGVector(dx: 10.0, dy: 10.0)) 

:だから、その論理的な順序は、最初にsceneDidLoadされた後ということでdidMove(後(右:)表示し)

は、私は次のように使用してバウンドするボールを作成しようとしています? sceneDidLoad OR didMove、私は同じ意図した結果を得る。私は「スマート」なのかベストプラクティスなのか、そしてなぜそれが理解できないのですか?

ありがとうございます!

C

答えて

0

呼び出しの順序は次のとおりです。 SceneDidLoadDidMove

SceneDidLoad:右あなたが作成することができ、ここで シーンの初期化または復号化またはシーンの動作の後に呼び出され、あなたのインスタンス変数は初期化されたビューとノードです。ここでのシーンは、ビューを知っている:シーンはまだメインビューを知っているものではありませんが、シーン

DidMoveにあなたのノードを追加することができますので、あなたがあなたの新しいビューを追加することはできませんように注意してください 。すべてのシーンと動作​​を構築します。

パフォーマンスの向上のために、SceneDidLoadを使用してシーンを表示してから表示することができます。

https://developer.apple.com/documentation/spritekit/skscene/1645216-scenedidload https://developer.apple.com/documentation/spritekit/skscene/1519607-didmove

関連する問題