我了解到有3种方法可以在SpriteKit中创建场景:init(),didMove和sceneDidLoad。
但是我不明白将这三种方式分开。阅读其他我理解调用顺序的问题是init-> SceneDidLoad-> didMove。
我该如何有效地使用它们?
答案 0 :(得分:3)
您对这些函数的调用顺序是正确的。但是只有init(size:)
实际上创建了一个场景。
init(size:)以给定的CGSize
为边界初始化一个新的场景对象。在场景变得可见之前必须进行的任何设置都应在此处进行。这一点很重要,因为只有在视图呈现之前,新初始化的场景才对用户可见。
sceneDidLoad()被称为init(size:)
的结果,可用于执行呈现场景之前所需的任何其他设置。可以从要创建新场景的任何地方调用init(size:)
,但是sceneDidLoad()
发生在场景本身中。对于您希望使用此类所有场景的任何设置,这很有用。
didMove(to:)是不同的,因为它与初始化无关。当视图显示场景时调用此函数。基本上,当它对用户可见时。通常在这里处理场景中元素 的UI调整和布局。