3

我不确定纹理图集的底层实现,所以我的问题是 -处理从中提取纹理的正确方法是什么?我需要遍历各种图集并拉出 64 个随机纹理。

创建静态图集并重用引用以提取纹理?

static SKTextureAtlas *monsterAtlas;
static int monsterCount;

monsterAtlas = [SKTextureAtlas atlasNamed:@"monsters"];
monsterCount = [monsterAtlas textureNames].count;

//pull out a random texture
NSString* textureName = [[monsterAtlas textureNames] objectAtIndex: arc4random()%monsterCount];
SKTexture* texture = [monsterAtlas textureNamed:textureName];

-或者-

每次我需要纹理时创建一个新图集?

SKTextureAtlas *atlas = [SKTextureAtlas atlasNamed:@"monster"];
SKTexture *f1 = [atlas textureNamed:@"monster-walk1.png"];

我要问的原因是,使用第一种方法,我的代码可能非常笨拙,因为我会创建 10 多个图集引用。这会占用太多内存吗?对于第二种方法,我担心每次执行循环迭代时我都会做很多额外的工作来创建图集。我该怎么做?

4

1 回答 1

5

每个图集创建一次并保留对它的引用。

如果您编写一个管理图集并允许您访问单个纹理的类,这并不笨拙。

于 2013-12-01T09:48:34.213 回答