Cocos2dx重启场景崩溃CCTextureCache

时间:2013-05-15 17:58:59

标签: c++ ios cocos2d-x

在iOS上的Cocos2dx中,我无法重新启动同一个场景。 我想在玩家死亡时重新启动相同的场景。启动时会发生很多事情,所以如果可能的话我宁愿不尝试手动重置所有游戏变量,清除缓存等。

在玩家死亡的部分我执行以下操作

cocos2d::CCScene *pScene = GameScene::scene();
cocos2d::CCDirector::sharedDirector()->replaceScene(pScene);

但这会导致以下崩溃:

CCTextureCache::CCTextureCache()
{
    CCAssert(g_sharedTextureCache == NULL, "Attempted to allocate a second instance of a singleton.");
    m_pTextures = new CCDictionary();
}

Gamescene继承自CCLayer,其构造函数如下所示。

CCScene* GameScene::scene()
{
    CCScene *scene = CCScene::create();
    GameScene *layer = GameScene::create();
    scene->addChild(layer);     
    return scene;
}

应用程序在此行崩溃GameScene * layer = GameScene :: create();但我真的无法继续遵循它。我在更换场景时做错了吗?

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

虽然你应该在scene()静态函数中实现适当的检查,但我认为这可能不会导致问题。 如果你可以提供这个GameLayer课程的所有代码,我可能会指出你的错误,因为我已经完成了你想要做的事情。

你可能正试图在init函数中使用纹理缓存执行非法操作,这是我的猜测。但是要发布你的代码!