Objective c 在Cocos2d游戏层中使用多个精灵表时出错

Objective c 在Cocos2d游戏层中使用多个精灵表时出错,objective-c,cocos2d-iphone,ccsprite,Objective C,Cocos2d Iphone,Ccsprite,我有以下代码: [[CCSpriteFrameCache sharedSpriteFrameCache]addSpriteFramesWithFile:@“cow_sprite.plist”]; [[CCSpriteFrameCache sharedSpriteFrameCache]addSpriteFramesWithFile:@“ray_sprite.plist”]; [[CCSpriteFrameCache sharedSpriteFrameCache]addSpriteFramesWit

我有以下代码:

[[CCSpriteFrameCache sharedSpriteFrameCache]addSpriteFramesWithFile:@“cow_sprite.plist”];
[[CCSpriteFrameCache sharedSpriteFrameCache]addSpriteFramesWithFile:@“ray_sprite.plist”];
[[CCSpriteFrameCache sharedSpriteFrameCache]addSpriteFramesWithFile:@“chicken_sprite.plist”];
[[CCSpriteFrameCache sharedSpriteFrameCache]addSpriteFramesWithFile:@“tank_sprite.plist”];
[[CCSpriteFrameCache sharedSpriteFrameCache]addSpriteFramesWithFile:@“human_sprite.plist”];
self.raySpriteSheet=[CCSpriteBatchNode batchNodeWithFile:@“ray_sprite.png”];
self.tankSpriteSheet=[CCSpriteBatchNode batchNodeWithFile:@“tank_sprite.png”];
self.chickenSpriteSheet=[CCSpriteBatchNode batchNodeWithFile:@“chicken_sprite.png”];
self.cowSpriteSheet=[CCSpriteBatchNode batchNodeWithFile:@“cow_sprite.png”];
self.humanSpriteSheet=[CCSpriteBatchNode batchNodeWithFile:@“human_sprite.png”];
[self addChild:self.raySpriteSheet];
[self addChild:self.tankSpriteSheet];
[self addChild:self.chickenSpriteSheet];
[self addChild:self.cowsritesheet];
[self addChild:self.humanSpriteSheet];
对于(int i=0;i<13;++i){
骰子*d=[[Dice alloc]initRandom];
如果(d.fileNum==0 | | d.fileNum==1){
[self.raySpriteSheet addChild:d.sprite];
}else if(d.fileNum==2){
[self.tankSpriteSheet addChild:d.sprite];
}else if(d.fileNum==3){
[self.chickenSpriteSheet addChild:d.sprite];
}else if(d.fileNum==4){
[self.cowSpriteSheet addChild:d.sprite];
}else if(d.fileNum==5){
[self.humanSpriteSheet addChild:d.sprite];
}
[rollDiceArray addObject:d];
}
我的想法是,我想能够使用5个单独的精灵表为5个单独的骰子动画。我为每个模具预先确定一个值,然后指定一个精灵/动画,最后将该精灵添加到相应的CCSpriteBatchNode

它将通过第一次迭代,但在第二次迭代中出现错误,给出以下错误:

***由于未捕获异常“NSInternalInconsistencyException”而终止应用程序,原因是:“CCSprite未使用相同的纹理id”

有什么想法吗?

该错误表示您试图将一个CCSprite添加到一个CCSpriteBatchNode中,该节点是使用与CCSprite使用的纹理不同的纹理初始化的。换句话说:CCSpriteBatchNode和添加到该批处理节点的所有CCSprite必须使用相同的纹理


作为旁注:如果牛、射线、坦克、鸡和人类图像都适合一个纹理图集,那么一定要将它们放入一个纹理图集。纹理图集的要点不是对图像进行排序和分类,而是加快渲染速度。在同一个纹理图集中可以打包的图像越多,渲染它们的速度就越快,最好只使用一个sprite批处理节点。

听起来应该可以解决这个问题。我打算用下午的时间把所有的东西都放进一个大雪碧里。应该能够把所有的东西都放在一起。我唯一需要弄清楚的是如何在一张纸上区分不同的精灵(坦克/射线/牛/鸡/人)。你有它们的名字。当然,你会想使用一个纹理图集程序,比如TexturePacker:你搞定了。然而,我有一些其他问题的精灵没有出现。没有错误或任何东西。我为此提出了另一个问题。如果你有什么想法,试试看。