【发布时间】:2013-11-08 15:35:57
【问题描述】:
好吧,这个让我尖叫到墙上……所以请耐心等待。
我开始在 Xcode 中使用 SpriteKit 模板编写一个简单的游戏。
我将两个 PNG 添加到名为 Stage01.atlas 的文件夹中,并将其拖到项目中。不记得我选择了哪个选项,因为它在项目导航器中显示为蓝色文件夹图标(可能是因为它有扩展名?)。
接下来,我使用实例化了几个精灵
[[SKSpriteNode alloc] initWithImageNamed:@"My_Image_Name_Without_The_@2x_Or_Extension"];
起初,它不起作用,因为我忘记在构建设置中启用纹理图集。然后,它就像一个魅力,但是......
接下来,我在图集中添加了第三个 PNG 以显示一种新的精灵。
新的精灵不见了。
我尝试全新安装:从设备中删除应用,清理,构建。
现在所有的精灵都被渲染为一个带有后边框的白色四边形,内部有一个大的红色“X”。我还收到以下控制台消息:
SKTexture: Error loading image resource: "My_Image_Name_Without_The_@2x_Or_Extension"
我尝试删除 .atlas 文件夹并重新添加它,作为 “为任何添加的文件夹创建组” 和 “为任何添加的文件夹创建文件夹引用” (这可能会导致资源被放置在子文件夹而不是包根目录中,因此它通常对 UIImage 等很重要),无济于事。
我用这个替换了精灵创建代码:
SKTexture* texture = [SKTexture textureWithImageNamed:name];
SKSpriteNode* body = [[SKSpriteNode alloc] initWithTexture:texture];
...并放置断点以查看纹理是否为nil。 不是。
那么,什么给了?
旁注:与模板捆绑在一起的“宇宙飞船”纹理渲染良好。
旁注 2:有人创建了标签“spritekit”(所以不允许我使用它,因为它已经存在,但它不是作为建议提出的)。
【问题讨论】:
-
第三张图片是在 XCODE 中还是在 finder 中添加到图集的?
-
这有关系吗?如果我添加为“文件夹引用”,则在 finder 中添加文件会使其也自动出现在 Xcode 中。现在我在几个设备和模拟器中尝试使用干净/干净的构建文件夹,删除应用程序等,结果参差不齐......
-
只是一种预感,我想我之前在xcode中修改的时候遇到了麻烦,需要再次测试才能确定
-
您是否尝试过从设备/模拟器中删除应用程序?此外,如果您使用 .atlas 文件夹中的子文件夹,请不要使用路径。即,如果图像在“Stage01.atlas/images/image.png”中,您仍会将其加载为“image”或“image.png”,而不是“images/image.png”。
-
我不知道地图集中的子路径,我现在想不出它的用途......我的意思是,除了将你的精灵组织成地图集之外,你还需要什么?
标签: ios sprite-kit