管理cocos2d中的游戏阶段

时间:2011-09-08 09:17:39

标签: objective-c cocos2d-iphone

我有一个类,有一个方法可以创建我的所有精灵,身体,敌人,我游戏中舞台的背景。 init调用所有这些方法并在启动时创建它们。

现在,我想添加更多阶段,并以正确的方式这样做。

我正在考虑创建一个名为game-handler的新类,所以我有2个类,我之前提到的将添加精灵和身体,当我需要进入下一个级别时,我将调用游戏处理当前阶段,并获取新阶段图像和坐标的字符串。

就像每个阶段class1调用处理程序,获取正确的值来加载,并根据该值添加精灵和实体。 那是对的吗 ? 内存管理就好吗?

非常感谢。

1 个答案:

答案 0 :(得分:2)

我这样做的方法是让我的自定义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