Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 何时使用sceneDidLoad v didMove(查看:)_Ios_Swift_Skscene_Skview - Fatal编程技术网

Ios 何时使用sceneDidLoad v didMove(查看:)

Ios 何时使用sceneDidLoad v didMove(查看:),ios,swift,skscene,skview,Ios,Swift,Skscene,Skview,有人能帮我理解游戏场景中ScenedLoad和didMove(查看:)之间的区别吗?我意识到,一旦场景出现,它就会被调用。初始化场景后,将调用While。因此,它的逻辑顺序是先执行sceneDidLoad,然后再执行didMove(到view:)之后(对吗?) 话虽如此,我尝试使用以下方法创建一个反弹球: let borderBody = SKPhysicsBody(edgeLoopFrom: self.frame) self.physicsBody = borderBody

有人能帮我理解游戏场景中ScenedLoad和didMove(查看:)之间的区别吗?我意识到,一旦场景出现,它就会被调用。初始化场景后,将调用While。因此,它的逻辑顺序是先执行sceneDidLoad,然后再执行didMove(到view:)之后(对吗?)

话虽如此,我尝试使用以下方法创建一个反弹球:

    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,我得到了相同的预期结果。我不明白哪一种是“更聪明”或最佳实践方法,为什么

谢谢

C

通话顺序为: SceneDidLoadDidMove

SceneDidLoad:在场景初始化或解码或场景行为之后立即调用 在这里,您可以创建实例变量初始化视图和节点。 请注意,不能添加新视图,因为场景尚不知道主视图,但可以将节点添加到场景中

DidMove:在这里,场景知道视图。您还可以构建所有场景和行为

因此,对于性能增益问题,可以在显示场景以供查看之前使用ScenedLoad进行初始化