【发布时间】:2014-03-01 18:14:09
【问题描述】:
我有一个带有一堆图块的图集,我正在尝试使用 SKTexture 和 SKTextureAtlas 将它们加载到内存中,但它不起作用。我使用以下代码来加载它们:
NSString *atlasName = [NSString stringWithFormat:@"Tiles"];
SKTextureAtlas *tileAtlas = [SKTextureAtlas atlasNamed:atlasName];
NSInteger numberOfTiles = tileAtlas.textureNames.count;
backgroundTiles = [[NSMutableArray alloc] initWithCapacity:numberOfTiles];
for (int y = 0; y < 5; y++) {
for (int x = 0; x < 9; x++) {
int tileNumber = y*9 + x + 1;
NSString *textureName = [NSString stringWithFormat:@"tile%d.png",tileNumber];
SKSpriteNode *tileNode = [SKSpriteNode spriteNodeWithTexture:[tileAtlas textureNamed:textureName]];
CGPoint position = CGPointMake((0.5 + x)*_tileSize - _levelWidth/2,(0.5 - y - 1)*_tileSize + _levelHeight/2);
tileNode.position = position;
tileNode.zPosition = -1.0f;
tileNode.blendMode = SKBlendModeReplace;
[(NSMutableArray *)backgroundTiles addObject:tileNode];
}
}
然后我使用此代码将它们添加到我的场景中:
- (void)addBackgroundTiles
{
for (SKNode *tileNode in [self backgroundTiles]) {
[self addChild: tileNode];
}
}
问题是它没有为图块加载正确的纹理或根本找不到纹理。 我最终得到的是这个(忽略蓝色圆圈):http://i.stack.imgur.com/g39BF.png
这是我的瓷砖图集:http://snk.to/f-ctp5yhpz
编辑:我正在使用 NameChanger(www.mrrsoftware.com/MRRSoftware/NameChanger.html) 重命名我的所有图块,是那个程序弄乱了我的 png 吗?据我所知,在我重命名它们后它们的顺序是正确的。
【问题讨论】:
-
我看不出名称更改器是您的问题,只要您在渲染(创建)帧之后并将它们添加到图集之前执行此操作。名称更改器不会重写任何文件,只是更改文件名,就像您手动重命名它们一样。当然,请确保它们具有正确的扩展名“.png”和 @2x 前缀(如果您正在使用)。
-
我没有@2x 扩展,但我现在添加了,问题仍然存在。
标签: ios sprite-kit sktexture sktextureatlas