我无法安静地弄清楚如何调试它。我有一个 CCScene 正在运行,当场景被替换时,我收到以下错误消息。
该场景有一个精灵批处理节点,其中添加了 CCSpriteSubclass。
这就是清理方法,您将在下面找到断言失败消息:
-(void) cleanup
{
[[GameController sharedGameController].musicLayer removeMusicSourceForKey:backgroundMusicFileName];
[CCTextureCache purgeSharedTextureCache];
[CCSpriteFrameCache purgeSharedSpriteFrameCache];
[CCAnimationCache purgeSharedAnimationCache];
// [[CCSpriteFrameCache sharedSpriteFrameCache] removeUnusedSpriteFrames];
[super cleanup];
}
批处理节点在 initWithId:(int)sceneId 方法中创建如下:
//Prepare sprites sheets for the rest of the game art
[frameCache addSpriteFramesWithFile:[NSString stringWithFormat:@"art%i-hd.plist", sceneId]];
sharedSpriteMainBatchNode = [CCSpriteBatchNode batchNodeWithFile:[NSString stringWithFormat:@"art%i-hd.png", sceneId]];
然后我添加所有 CCSpriteSubclass 对象。
这是断言失败消息:
** Assertion failure in -[CCSpriteSubclass setTexture:], /Users/xxx/Desktop/xxx/xxx/libs/cocos2d/CCSprite.m:934
2012-12-03 12:54:33.335 RockTale[869:707] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'CCSprite: Batched sprites should use the same texture as the batchnode'
*** First throw call stack:
(0x338d28bf 0x303c61e5 0x338d27b9 0x311193b3 0x9ad43 0x9a2fb 0x4bca3 0x44ddf 0x38b07 0x503f7 0x94c03 0xbbeed 0xbcfe7 0x34fb7423 0x34fb7379 0x31b4cf93 0x36e52891 0x3389bf43 0x338a6553 0x338a64f5 0x338a5343 0x338284dd 0x338283a5 0x37f9afcd 0x3128b743 0x2edf 0x2ea0)
terminate called throwing an exception(lldb)
编辑:在 setTexture 方法中添加了一个断点,这是我“不”看到的:)
编辑 2:我希望我能像在 Java 中一样设法检索完整的堆栈跟踪。我在另一个问题中问过这个问题,有人告诉我应该添加一个全局异常。我仍然需要弄清楚如何检索堆栈跟踪。 .