代码之家  ›  专栏  ›  技术社区  ›  K.K.D

spritekit中的init()vs didmove vs scenedidload

  •  2
  • K.K.D  · 技术社区  · 6 年前

    我知道在spritekit、init()、didmove和scenediddload中有三种方法可以创建场景。
    但我不明白这三种方法的区别。在阅读其他问题时,我明白了调用的顺序是init->scenediddload->didmove。

    我如何才能有效地使用它们?

    1 回复  |  直到 6 年前
        1
  •  2
  •   guard working else panic    6 年前

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

    init(size:) 用给定的 CGSize 作为界限。在场景变为可见之前必须设置的任何内容都应该发生在这里。这一点很重要,因为在视图显示新初始化的场景之前,用户无法看到它。

    sceneDidLoad() 由于以下原因调用 初始化(大小:) 并且可以用于在场景出现之前进行任何需要的设置。 初始化(大小:) 可以从任何你想创建新场景的地方调用,但是 sceneDidLoad() 发生在场景本身。这对于您希望该类的所有场景使用的任何设置都很有用。

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