2013-10-14 19 views
1

我刚开始使用纹理图集。它工作得很好,直到我试图将名称从大写字母改成小写字母。自那时以来,Xcode一直无法找到我的地图集。无论是或者它可以加载缺少的资源图像而不是它应该使用的图像。纹理图集未找到或资源缺失使用的图像

我已删除派生数据,重新启动Xcode和Mac。删除并重新创建Xcode中的地图集文件夹。到目前为止,似乎没有什么区别。

下面是我加载资源的代码,以防万一我弄乱了它的内容。

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]]; 
+0

我稍微接近现在正在发生的事情。当我从animationAtlas数组中检索纹理名称时,它给出了序列中第一幅图像的错误名称。因此它试图加载错误的文件,这就是为什么没有找到它。我删除了派生数据,并将应用程序加载到其他设备上,但它仍然给我错误的名称。还有什么我可以清除的? –

+0

所以现在它正在寻找正确的文件,但没有找到它们。 –

回答

1

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

1

请注意,在iOS上,文件系统区分大小写。实际上,你可以有两个文件具有相同的名称仅在大小写不同,例如:

animationImages.png 
animationimages.png 

所以,如果你在你的项目中改变文件名的情况下,你必须改变加载该文件中的相应的代码即使重命名只改变了文件的外壳

此外,当更换文件时,请务必从设备中删除应用程序并执行项目 - >清洁。 Xcode仅向文件包中添加文件,它永远不会删除它们,因此即使代码不在项目中,您的代码仍可能会无意中访问旧文件。