未找到纹理图集或使用资源缺失图像

时间:2013-10-14 13:32:10

标签: objective-c sprite-kit

我刚开始使用纹理图集。它工作得很好,直到我试图将名称从一个大写字母更改为相同的小写字母。从那时起,Xcode一直无法找到我的地图集。无论是它还是何时可以加载丢失的资源图像而不是它应该使用的图像。

我删除了派生数据,重新启动了Xcode和Mac。删除并重新创建Xcode中的atlas文件夹。到目前为止,似乎没有任何区别。

这是我加载资产的代码,以防万一我搞砸了。

NSMutableArray *animationFrames = [NSMutableArray array];
SKTextureAtlas *animationAtlas = [SKTextureAtlas atlasNamed:@"animationImages"];

for (int i = 1; i < animationAtlas.textureNames.count; i++) {
    NSString *texture = [NSString stringWithFormat:@"animationImage%02d", i];
    [animationFrames addObject:[animationAtlas textureNamed:texture]];
}

SKSpriteNode *sprite = [SKSpriteNode spriteNodeWithTexture:[animationFrames firstObject]];

2 个答案:

答案 0 :(得分:1)

如果您刚刚更改了名称的大小写,则可能不是纹理图集问题。根据您重命名资源的方式,Xcode名称可能与磁盘上的名称不同。如果您将它们添加为项目的引用而不是复制实际图像,则可能是这个问题。如果它们被复制(因为在组中由磁盘上的文件夹支持),它可能是某个地方的命名错误。你说它仍在加载那些不存在的资源,它指向一个脏缓存副本 - 如果是这种情况,请确保从设备上卸载应用程序。

答案 1 :(得分:1)

请注意,在iOS上,文件系统区分大小写。实际上,只有两个具有相同名称的文件才有区别,例如:

animationImages.png
animationimages.png

因此,如果您更改了项目中文件名的大小写,则必须更改加载此文件的相应代码,即使重命名仅更改了文件的大小写

同样在更换文件时,请务必从设备中删除该应用并执行项目 - &gt;清洁即可。 Xcode只会将文件添加到捆绑包中,它永远不会删除它们,因此您的代码可能仍会无意中访问旧文件,即使它已不在项目中。