atlasWithName:抛出"不支持的纹理图集格式"异常

jem*_*ons 1 cocoa sprite-kit

我在SpriteKit游戏中使用了几个纹理图册没有问题,但我添加了一个新的(foo.atlas)我正在使用以下代码加载:

SKTextureAtlas *myAtlas = [SKTextureAtlas atlasNamed:@"foo"];
Run Code Online (Sandbox Code Playgroud)

每当执行上面的行时,抛出异常并将以下内容打印到控制台:

不支持的纹理图集格式代码2

但就是这样.没有进一步细节.即使我从地图集中删除了每个纹理并将其替换为我的其他地图集中的已知良好纹理,我也会收到此错误.我重新启动,通过构建清理,并删除派生数据...都无济于事.

关于为什么这不起作用的任何想法?

jem*_*ons 7

精简版

如果你在项目中包含一个与你的地图集同名的plist(foo.plist在这个例子中),你将得到上面的错误,没有任何方法可行.将plist或地图集重命名为不同的东西.

漫长而悲惨的版本

查看Resources具有地图集的应用程序的文件夹,可以看到构建过程将foo.atlas文件夹中的切片整合到一个称为的巨型纹理中foo.1.png.它还会生成一个plist文件来记录atlas的子纹理的坐标(你猜对了)foo.plist.

这两个foo.1.pngfoo.plist被称为文件夹中包裹起来foo.atlasc.但显然[SKAtlas atlasNamed:@"foo"]发现Foo的plist出现一些像广阔NSBundle-URLForResource:withExtension:,因为如果你碰巧有一个名为无关的plist foo.plist在资源目录中的任何地方,被加载,而不是图谱的 plist中.当然,它可能不符合SpriteKit关于atlas plist应该是什么样子的想法,所以它会吓坏并吐出上面提到的"Unsupported Texture Atlas"错误.