我有一个类,有一个方法可以创建我的所有精灵,身体,敌人,我游戏中舞台的背景。 init调用所有这些方法并在启动时创建它们。
现在,我想添加更多阶段,并以正确的方式这样做。
我正在考虑创建一个名为game-handler的新类,所以我有2个类,我之前提到的将添加精灵和身体,当我需要进入下一个级别时,我将调用游戏处理当前阶段,并获取新阶段图像和坐标的字符串。
就像每个阶段class1调用处理程序,获取正确的值来加载,并根据该值添加精灵和实体。 那是对的吗 ? 内存管理就好吗?
非常感谢。
答案 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