具有多个场景和图层的cocos2d-x对象管理

时间:2013-05-29 23:48:21

标签: c++ object cocos2d-iphone cocos2d-x

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

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

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

我无法管理所有事情。

一种可能的方法是创建一个包含游戏玩法图层的矢量(不是构成整个游戏的图层,就像背景一样),每个图层都有它自己的图层上的对象和每个图层的状态。 / p>

如何根据另一层中发生的事情真正影响单独图层的状态。

我认为我可能正在努力将一种好方法存储在游戏中并确保我可以访问这些对象来改变它们。

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

1 个答案:

答案 0 :(得分:1)

我认为您正在寻找的解决方案是更有效地使用类。我现在有一个游戏,玩家必须管理4个“走廊”中的活动,每个走廊由3个“行”组成,每行包含各种坏人,好人等等。您可以通过滑动在走廊中循环,每次只能看到1个走廊,因此每个走廊都是自己的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;

然后在.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
}

定义课程让我感到害怕的时间最长,但是如果你没有过度思考它们,那么它们实际上很容易合作,而且组织的东西也很奇怪。

希望你能从中得到一些想法:3