我想了解游戏创作中的对象管理。我正在使用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
}
在很长一段时间里,定义类让我很害怕,但如果你不过度思考,它们实际上很容易处理,并且对组织东西有神奇的作用。