init () против didMove против sceneDidLoad в SpriteKit - PullRequest
0 голосов
/ 06 декабря 2018

Я понимаю, что есть 3 способа создания сцены в SpriteKit, init (), didMove и sceneDidLoad.
Но я не могу понять, как отделить 3 способа.Читая другие вопросы, я понял, что порядок вызова - init -> SceneDidLoad -> didMove.

Как я могу использовать их для эффективного использования?

1 Ответ

0 голосов
/ 07 декабря 2018

Вы правы в отношении порядка вызова этих функций. Но только init(size:) фактически создает сцену.

init (size:) инициализирует новый объект сцены с помощьюучитывая CGSize в качестве своих границ.Все, что должно быть установлено до того, как сцена станет видимой, должно произойти здесь.Это важный бит, потому что вновь инициализированная сцена не видна пользователю, пока она не будет представлена ​​представлением.

sceneDidLoad () вызывается в результате init(size:) и может бытьиспользуется для дополнительной настройки, необходимой перед представлением сцены.init(size:) можно вызывать из любой точки, где вы хотите создать новую сцену, но sceneDidLoad() происходит в самой сцене.Это полезно для любой настройки, которую вы хотите использовать во всех сценах этого класса.

didMove (to:) отличается тем, что не имеет отношения к инициализации.Эта функция вызывается, когда сцена представлена ​​представлением.В основном, когда это становится видимым для пользователя.Настройки пользовательского интерфейса и расположение элементов внутри сцены обычно обрабатываются здесь.

...