精灵套件纹理大小/分辨率

utr*_*utr 5 objective-c ios retina-display sprite-kit asset-catalog

我刚刚开始使用Sprite Kit,并且在加载纹理精灵方面存在问题.

我在Xcode中使用Sprite Kit模板创建了一个新项目,并希望添加一个带有图像文件的简单精灵作为纹理.这是我在场景的init方法中使用的代码:

SKSpriteNode *myNode = [SKSpriteNode spriteNodeWithImageNamed:@"my_image_file"];
myNode.position = CGPointMake(100, 100);
[self addChild:myNode];
Run Code Online (Sandbox Code Playgroud)

我没有将扩展名添加到图像名称,因此我的文件名为"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
Run Code Online (Sandbox Code Playgroud)

我清理了项目并在每次运行之间从模拟器中删除了应用程序,所以我认为这不是卡住或丢失图像文件的问题.

我也尝试在互联网上搜索Sprite Kit纹理文件命名约定是如何工作的,但是我找不到任何关于这个问题的文档.

有人可以简要解释它是如何工作的,或者至少向我展示一个解决方案,不涉及重命名我的所有图像文件,或明确定义所有精灵的大小?

谢谢,utr

qua*_*tym 1

如果您使用资产目录,则无需重命名所有文件。如果您使用 Xcode SpriteKit 模板创建项目,只需单击 Images.xcassets 即可。然后将图像拖放到适当的位置。您还可以通过执行“新建文件”->“资源”->“资产目录”手动创建资产目录。