Layer vs Scene в Cocos2d для разработки игр для iPhone
-
03-07-2019 - |
Вопрос
Используя cocos2d для разработки игр для iPhone, я запутался между Layer и Scene. Например, моя простая игра имеет несколько «страниц пользовательского интерфейса» как главное меню, рекорды, игровая доска и т. д.
Поэтому я должен использовать слой или сцену для каждой "страницы пользовательского интерфейса" и почему?
Решение
Просмотр SpritesDemo.m / .h может показаться, что они используют Layer, а затем создают новые сцены, присоединяют слой и затем заменяют сцену на режиссере
@interface SpriteDemo : Layer
@interface SpriteManual : SpriteDemo
Затем код выполняет следующие действия:
-(void)nextCallback:(id)sender {
Scene *s = [Scene node];
[s add: [nextAction() node]];
[[Director sharedDirector] replaceScene s];
}
Итак, короче говоря, ответом на ваш вопрос будет «оба», вы используете Layer для представления вашей фактической «страницы пользовательского интерфейса», но вы присоединяете Layer к новой сцене и заменяете текущую сцену в директоре. . р>
Другие советы
Это просто:
В этих примерах есть CCLayer и метод + scene, который создает новую сцену и присоединяет к ней слой. Поскольку слой не является «страницей пользовательского интерфейса» как вы назвали это. Сцена - это «Страница пользовательского интерфейса».
На обоих (сцена и слой) вы можете добавить больше слоев в качестве дочерних. Таким образом, вы можете сложить столько слоев, сколько захотите. На самом деле это хороший способ включить мультитач - создать слой для каждого из ваших объектов и включить касания на этих слоях. Итог, то, как они это сделали, это правильно, поэтому вы должны также работать со слоями и использовать метод + scene, чтобы прикрепить основной слой к сцене.
Надеюсь, это поможет. Извините за мой английский. Не родной.
Вам действительно не нужно использовать Layer, если вы не получаете какой-либо сенсорный ввод (потому что это единственный класс в Cocos2D, который реализует TouchEventsDelegate). Демонстрации работают хорошо, если вы помещаете их код прямо на сцену без Layer, так что, насколько я могу судить, они сделали это только для демонстрации других функциональных возможностей Cocos2D (добавление дочерних элементов, установка позиций и т. Д.). Р>