潜入“使用ios5学习cocos2d游戏开发”时,在ch08
EnemyCache.m
中的
-(id) init
{
if ((self = [super init]))
{
// get any image from the Texture Atlas we're using
CCSpriteFrame* frame = [[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName:@"monster-a.png"];
batch = [CCSpriteBatchNode batchNodeWithTexture:frame.texture];
[self addChild:batch];
[self initEnemies];
[self scheduleUpdate];
}
return self;
}
所以批次是纹理“monster-a.png”
EnemyEntity.m
的{{1}}方法中的
initWithType
因此返回的对象可能位于3个不同的帧中。从Only the CCSprites that are contained in that texture can be added to the CCSpriteBatchNode开始,很明显,'monster-b.png'不包含在'monster-a.png'中,为什么不同的敌人仍然可以添加到批次中?
答案 0 :(得分:1)
可以将多个图像放入一个。这种图像称为图集。所以所有的怪物都有一个大的纹理。使用.plist配置文件完成对每个图像的访问,其中存储有关具体图像放置在大纹理中的位置的信息。
它有很多意义,因为切换纹理是一项昂贵的操作。将您需要的所有内容放在一个纹理中并使用批处理要快得多。此外,它还需要更少的GPU内存,因为纹理存储在GPU上的(2 ^ n,2 ^ m)缓冲区中,并提供大纹理,您可以最小化纹理中的自由空间。例如,加载每65像素大小为65的图像将创建128个/ 128像素纹理。