我刚开始使用 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 方法。
我在模拟器中运行了这个项目(使用视网膜 iPhone 作为设备),令我惊讶的是,精灵看起来是我预期的两倍,而且像素也很大。看起来好像我使用的是非视网膜 iPhone。据我所知,Apple Adventure 示例应用程序使用相同的命名约定,并且精灵在那里看起来很好。
我将我的文件重命名为“my_image_file@2x.png”,一切正常,精灵出现在我期望的视网膜显示器上。由于我有很多图像文件,我不想全部重命名它们,而且在没有@2x 后缀的 Apple Adventure 应用程序中一切正常。
如果我在 SKSpriteNode 上使用此方法明确定义纹理的大小,它也可以正常工作:
+ (instancetype)spriteNodeWithTexture:(SKTexture *)texture size:(CGSize)size
我清理了项目并在每次运行之间从模拟器中删除了应用程序,所以我认为这不是图像文件卡住或丢失的问题。
我还尝试在 Internet 上搜索以了解 Sprite Kit 纹理文件命名约定如何工作,但我找不到任何有关该问题的文档。
有人可以简要解释一下它是如何工作的,或者至少向我展示一个不涉及重命名我的所有图像文件或明确定义我所有精灵的大小的解决方案?
谢谢,utr