我试图使用CCSpriteBatchNode来一次性渲染多个精灵以优化我的游戏。然而,当我将CCSpriteBatchNode作为我的精灵的父节点时,Cocos2d出现了这个错误:
"CCSprite is not using the same texture id"
我感到困惑,因为我有一个单独的1024x1024纹理图集包含所有我的图形。它是使用TexturePacker创建的,而且没有使用批处理节点,这一切都正常工作。我一直在使用以下方式加载:
[[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:@"atlas1.plist"];
现在我正在尝试像这样使用CCSpriteBatchNode:
CCSprite* sprite = [CCSprite spriteWithSpriteFrameName:@"something.png"];
CCSpriteBatchNode* bar = [CCSpriteBatchNode batchNodeWithFile:@"atlas1.png"];
[bar addChild: sprite]; // assert error here
我尝试向cocos2d纹理初始化/查找代码添加一些NSLog调试输出,令人惊讶的是,有一些纹理被创建为不同的尺寸(例如256x256甚至更小)。我不明白在仅有单个1024x1024 png作为输入时如何发生这种情况。
发生了什么?我该如何进行调试?
更新:
Bongeh的答案帮助我解决了问题-使我仔细检查了一遍所有内容。我的iOS模拟器中还存在一些旧版本游戏的过期PNG文件正在加载,即使它们不再在Xcode项目中。从Xcode执行“清除”甚至“清除构建文件夹”都没有效果,但使用iOS模拟器的“重置内容和设置”命令就可以解决问题。好极了!