2013-05-15 140 views
2

在iOS上的Cocos2dx中,我遇到了重新啓動相同場景的問題。 我希望在玩家死亡時重新啓動相同的場景。開始時會發生很多事情,所以如果可能的話,我寧願不嘗試手動重置所有遊戲變量,清除緩存等。Cocos2dx重新啓動場景崩潰CCTextureCache

在玩家死亡我做了部分支持以下

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

看起來很好,問題是:除此之外,你還做了其他什麼嗎?一個常見的問題是在cocos2d之後過於急於清理 - 通常只是不必要的,有時適得其反(例如每次發生場景更改時清除所有緩存的數據),並且在極少數情況下可能會崩潰(嘗試釋放導演等等) 。調用堆棧的崩潰將有所幫助。 – LearnCocos2D

回答

0

雖然你應該實現在場景()靜態函數適當的檢查,但我認爲可能不會造成問題的原因。 如果你可以給這個GameLayer類的所有代碼,我可能會指出你的錯誤,因爲我已經完成了你正在做的事情。

您可能試圖在init函數中使用紋理緩存進行非法操作,這是我的猜測。但是發佈你的代碼!