SpriteKit中的init()vs didMove vs sceneDidLoad

时间:2018-12-06 08:12:17

标签: ios sprite-kit

我了解到有3种方法可以在SpriteKit中创建场景:init(),didMove和sceneDidLoad。
但是我不明白将这三种方式分开。阅读其他我理解调用顺序的问题是init-> SceneDidLoad-> didMove。

我该如何有效地使用它们?

1 个答案:

答案 0 :(得分:3)

您对这些函数的调用顺序是正确的。但是只有init(size:)实际上创建了一个场景。

init(size:)以给定的CGSize为边界初始化一个新的场景对象。在场景变得可见之前必须进行的任何设置都应在此处进行。这一点很重要,因为只有在视图呈现之前,新初始化的场景才对用户可见。

sceneDidLoad()被称为init(size:)的结果,可用于执行呈现场景之前所需的任何其他设置。可以从要创建新场景的任何地方调用init(size:),但是sceneDidLoad()发生在场景本身中。对于您希望使用此类所有场景的任何设置,这很有用。

didMove(to:)是不同的,因为它与初始化无关。当视图显示场景时调用此函数。基本上,当它对用户可见时。通常在这里处理场景中元素 的UI调整和布局。