我一直在网上搜索,我似乎没有找到任何替代方法来比较两个多态对象是否是同一类型,或者多态对象是否是一种类型。这样做的原因是因为我要在我目前正在创建的游戏中实现一个实体系统。
除了使用宏或演员表(演员表不是这样做的可移植方法)之外,我还没有找到另一种方法。目前这就是我识别对象的方式,有没有更有效或更有效的方法来做到这一点?(不使用 C++ RTTI)
我把它贴在了 pastebin 上,因为把它贴在这里太麻烦了。 http://pastebin.com/2uwrb4y2
如果你仍然不明白我想要达到的目标,我会试着解释一下。游戏中的实体就像游戏内部的对象(例如玩家或敌人),它具有附加到它的组件,这些组件是实体的数据。实体系统中的系统是将游戏的数据和逻辑结合在一起的系统。
例如,如果我想在屏幕上显示一个模型,它将类似于:
World world; // Where all entities are contained
// create an entity from the world, and add
// some geometry that is loaded from a file
Entity* e = world.createEntity();
e->add(new GeometryComponent());
e->get<GeometryComponent>()->loadModel("my_model.obj"); // this is what I want to be able to do
world.addSystem(new RenderingSystem());
// game loop
bool isRunning = true;
while(isRunning)
{
pollInput();
// etc...
// update the world
world.update();
}
编辑:这是一个用 Java 编程的框架,主要完成我想做的事情。 http://gamadu.com/artemis/tutorial.html