Cocos2d-x对象管理与多个场景和层



我想了解游戏创作中的对象管理。我正在使用Cocos2d-x。

我有一个场景,它有几个图层。这些层由几层组成。

用户通过触摸事件将对象添加到图层。

我很难管理一切。

是一种可能的方法来创建包含游戏玩法层的矢量(而不是像背景那样构成整个游戏玩法的图层),并且每个图层都有自己的矢量,即图层上的对象和每个对象的状态。

那么我如何根据另一层发生的事情来真正影响一个单独层的状态呢?

我想我可能正在努力结合一种好方法来存储游戏中正在发生的事情,并确保我可以访问这些对象来改变它们。

可以创建一个CCScene,然后创建多个CCScene ?而不是在各个层之间来回滑动,用户在场景之间来回滑动,我使用父CCScene来知道创建的其他CCScene发生了什么。或者我只是创建一个CCNode,然后创建多个ccscene,并使用节点来跟踪正在发生的事情。

我认为您正在寻找的解决方案是更有效地使用类。我现在有一款游戏,玩家必须在4个"走廊"中管理活动,每个走廊由3行组成,每行包含各种坏人、好人等等。你通过滑动循环穿过走廊,每次只能看到一个走廊,所以每个走廊都有自己的hudlayer。管理散落在走廊上的坏人是一场噩梦,而且效率很低,所以我需要一种好方法来将坏人分成小组,而不是在主函数....中使用一堆硬编码数组我是这样做的:

在"self"里面有4个大厅hud层,每个大厅里面有3行是NSMutableArrays,每一行里面有一些数组代表演员类型(好人,坏人,碎片等)。

将所有这些都放在嵌套数组中可以工作。例子:

 NSMutableArray *badGuys;
 NSMutableArray *goodGuys;
 NSMutableArray *row1 = [NSMutableArray arrayWithObjects: badGuys, goodGuys];
 (repeat for row2, row3)
 NSMutableArray *hallWay1 = [NSMutableArray arrayWithObjects: row1, row2, row3];
 NSMutableArray *mainGame = [NSMutableArray arrayWithObjects: hallway1, hallway2....

然而,这需要大量显式定义的变量。更简洁的方法是使用类。

RowClass.h/RowClass.m. h:

NSMutableArray *myGoodGuys;
NSMutableArray *myBadGuys;

then in the .m make

-(NSMutableArray *) returnMyGoodGuys { return myGoodGuys };

HallwayClass.h/HallwayClass.m

RowClass *myRow1 = [[RowClass init] alloc];
RowClass *myRow2 = [[RowClass init] alloc];
RowClass *myRow3 = [[RowClass init] alloc];
NSMutableArray *allMyRows = [NSMutableArray arrayWithObjects: myRow1, myRow2, myRow3];

:

- (NSMutableArray *) getRowNumber : (int)rowNumber { return allMyRows[rowNumber-1]; }
HallwayClass *hall1 = [[HallwayClass init] alloc];

所以当你需要在某个走廊拉出好人时

NSMutableArray *hall1row1GoodGuys = [[hall1 getRowNumber:1] returnMyGoodGuys];

对数组

做一些操作
[hall1row1GoodGuys retain];

如果你想在foreach循环中处理它:

foreach(RowClass *row in hallway1.allMyRows)
{
   do stuff
}

for(i=0; i<4; i++)
{
   RowClass *nextRow = hallway1.allMyRows[i];
    stuff
}
在很长一段时间里,定义类让我很害怕,但如果你不过度思考,它们实际上很容易处理,并且对组织东西有神奇的作用。

最新更新