управлять игровыми этапами в cocos2d - PullRequest
1 голос
/ 08 сентября 2011

У меня есть класс, в котором есть методы, которые создают все мои спрайты, тела, врагов, фоны сцены в моей игре. init вызывает все эти методы и создает их при запуске.

Теперь я хочу добавить еще много этапов и сделать это правильно.

Я думал о создании нового класса под названием: game-handler, поэтому у меня есть 2 класса, которые я упоминал ранее, добавит спрайты и тела, и когда мне нужно будет перейти на следующий уровень, я назову игру обработчик с текущим этапом, и возвращает строки изображений нового этапа и координаты.

так, что каждый этап class1 вызывает обработчик, получает правильные значения для загрузки и добавляет спрайты и тела в соответствии с этими значениями. это верно ? управление памятью будет в порядке, как это?

Большое спасибо.

1 Ответ

2 голосов
/ 08 сентября 2011

То, как я это делаю, заставляет мой собственный подкласс CCScene принимать некоторые значения конфигурации в init.Затем я создаю другой класс, который действует как менеджер, который будет создавать экземпляр этой CCScene для каждого нового этапа и передавать его в метод CCDirector replaceScene.Таким образом, каждый этап является новым созданием экземпляра класса CCScene, поэтому не будет риска невыпущенной памяти или повторного использования значений переменных.

Предложение о том, как выглядит класс менеджера:

@protocol GameManager : NSObject {
    int currentLevel;
    NSMutableArray *stageConfigs;
}

- (id)init;

+ (GameManager *)sharedManager;

- (void)goToLevel:(int)levelNum;

- (void)goToNextLevel;

@end

@implementation GameManager

...

- (void)goToLevel:(int)levelNum {
   StageConfig *config = (StageConfig *)[stageConfigs objectAtIndex:levelNum];

   GameScene *scene = [[GameScene alloc] initWithConfig:config];
   [[CCDirector sharedDirector] replaceScene:scene];
   [scene release];
}

...

@end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...