Где правильно настроить содержимое SKScene в SpriteKit?

Можно ли настраивать (располагать спрайты, добавлять видимые узлы и т. д.) содержимое SKScene в методе инициализации?

Где правильное место для таких вещей: init? сделалMoveToView? что-то другое?


person AndrewShmig    schedule 09.03.2014    source источник
comment
Эррр, да. Делайте это везде, где это работает без проблем. Но чего вы на самом деле добиваетесь? Ваш вопрос довольно неконкретен.   -  person LearnCocos2D    schedule 10.03.2014
comment
@LearnCocos2D, все, что я хочу знать, есть ли правильный метод для инициализации/конфигурации сцены. Это все :)   -  person AndrewShmig    schedule 10.03.2014
comment
Init предназначен для инициализации, за исключением случаев, когда вы не можете этого сделать. ;) Например, self.view равен нулю при инициализации, поэтому любой код установки, которому требуется представление, должен запускаться в didMoveToView.   -  person LearnCocos2D    schedule 10.03.2014
comment
@LearnCocos2D, так что, если я не использую представления UIKit, я могу свободно настроить свой SKScene в методе инициализации? Но если я хочу, например, добавить UIButton, лучшее место для этого — метод didMoveToView. Я прав? Если да - пожалуйста, оставьте свои комментарии в качестве ответа, и я приму это.   -  person AndrewShmig    schedule 10.03.2014


Ответы (1)


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

init вызывается при инициализации SKScene. Плюсы использования init для позиционирования и добавления спрайтов: он вызывается только один раз, и все будет готово, как только вы представите его на сцене. Если вам нужно предварительно загрузить сцены для быстрого переключения, это может быть удобно. Минусы: каждая сцена будет занимать память, необходимую для выполнения всего добавления спрайтов при инициализации, а не при ее отображении.

Лично я предпочитаю делать все в методе init.

person Theis Egeberg    schedule 10.03.2014