Cocos2d-x对象管理与多个场景和层
cocos2d-x object management with multiple scenes and layers
我想了解游戏创作中的对象管理。我正在使用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
}
在很长一段时间里,定义类让我很害怕,但如果你不过度思考,它们实际上很容易处理,并且对组织东西有神奇的作用。- 我们可以通过 IPC 传递具有动态管理成员的类对象吗?
- 创建跨平台 C++ 触摸管理器.在 c++ 中传递 Objective-c 对象涉及代码
- 管理器类和对象类之间的通信
- 是否可以在专用内存空间中分配一个为提升管理共享内存而创建的对象
- 如何将指针从unique_ptr传递到另一个对象并管理寿命
- 模板对象管理器,参数不正确
- C++ 对象内存管理
- 编写安全包装类以管理用户定义对象的指针
- 如何管理和处理仅在堆上创建的类的对象
- 一类应管理其实例化对象
- 使用GDI+删除位图和CLSID对象时,C++内存管理失败
- 学生成绩管理系统 在C++中,表达式必须具有指向对象类型的指针
- 检查派生自enable_shared_from_this的对象是否由shared_ptr管理?
- C 在具有不同对象类型的容器中管理ifstream
- 类对象也管理树结构
- 使用 std::unique_ptr 管理 COM 对象
- 公开对象管理器对象的可接受方法?
- Cocos2d-x对象管理与多个场景和层
- c++中的COM对象管理
- 对象管理——容器或工厂