0

在我尝试使用 Ogre 创建我的第一个 3D 游戏时,我开始编写一个通用的“对象”类。构造函数:

Object( const char* mesh, Ogre::SceneManager*& sm )
{
    ...
    _sn = sm->getRootSceneNode()->createChildSceneNode( _sn_name );
    _ent = sm->createEntity( _ent_name, mesh );
    _sn->attachObject(_ent);
    ...            
}

_sn 是 SceneNode* 并且 _ent 是 Entity*(都是私有的)。问题是没有任何东西被吸引到屏幕上!但如果我使用:

Ogre::Entity *map = mSceneMgr->createEntity("map","map.mesh");
Ogre::SceneNode *sc = mSceneMgr->getRootSceneNode()->createChildSceneNode("mapNode");
sc->attachObject(map);

在类之外,对象被绘制并且一切正常。

我的方法有什么问题,我该如何解决?

4

2 回答 2

1

我有一个解决方案:我之前有同样的经验,你应该检查:

  1. 创建了多少实例?

  2. 这里有多少构造函数?

  3. 你用这个词吗?如果您的类继承,请小心应用父方法和属性,因为它们依赖于它们的构造函数并且可能返回空指针。

  4. 如果您使用继承,我更喜欢将父 obj 传递给继承的类。

于 2012-08-12T18:34:33.853 回答
0

Managed to fix this. In my destructor I had the scene manager call detachAllObjects(). Commenting/removing that solved the problem obviously

于 2012-08-12T19:42:59.060 回答