我刚开始使用Sprite Kit,在加载纹理精灵时遇到了问题。
我在Xcode中使用Sprite Kit模板创建了一个新项目,并想添加一个简单的精灵,使用一张图片文件作为纹理。以下是我在场景的init方法中使用的代码:
SKSpriteNode *myNode = [SKSpriteNode spriteNodeWithImageNamed:@"my_image_file"];
myNode.position = CGPointMake(100, 100);
[self addChild:myNode];
我没有在图像名称中添加扩展名,所以我的文件名为"my_image_file.png",但我省略了末尾的".png"。我还将场景创建移动到viewWillLayoutSubviews方法中,这是许多教程建议的。
我在模拟器(使用retina iPhone作为设备)中运行了项目,令我惊讶的是,精灵的大小是我期望的两倍,并且像素也很大。看起来就像我正在使用非retina iPhone。据我所知,Apple Adventure示例应用程序使用相同的命名约定,那里的精灵显示得很好。
我将文件重命名为"my_image_file@2x.png",一切正常,精灵显示出我期望在retina显示屏上看到的效果。由于我有很多图像文件,我更喜欢不重命名它们,在Apple Adventure应用程序中没有使用@2x后缀也可以正常工作。
如果我显式定义SKSpriteNode上的纹理大小,它也能正常工作:
+ (instancetype)spriteNodeWithTexture:(SKTexture *)texture size:(CGSize)size
我在每次运行之间清理了项目并从模拟器中删除了应用,因此我认为这不是卡住或丢失图像文件的问题。我还尝试搜索互联网以了解Sprite Kit纹理文件命名约定的工作方式,但我找不到任何有关此问题的文档。能否有人简要解释一下它是如何工作的,或者至少向我展示一个不涉及重命名所有我的图像文件或显式为所有我的精灵定义大小的解决方案?谢谢,utr