1

我刚刚开始使用纹理图集。它工作得很好,直到我尝试将名称从一个带有大写字母的名称更改为带有小写字母的名称。从那以后,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]];
4

2 回答 2

1

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

animationImages.png
animationimages.png

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

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

于 2013-10-14T14:54:53.477 回答
1

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

于 2013-10-14T14:13:44.587 回答