Cocos2dx重启场景崩溃CCTextureCache

Cocos2dx restart scene crashing CCTextureCache

本文关键字:崩溃 CCTextureCache 重启 Cocos2dx      更新时间:2023-10-16

在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();但我真的不能再继续下去了。我在更换场景时做错了什么吗?

感谢您的帮助

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

你可能试图做一些非法的纹理缓存在你的init函数,这是我的猜测。但是一定要发布你的代码!