如何在SKTextureAtlas中使用SKTextureFilteringNearest

Nic*_*tak 9 objective-c ios sprite-kit

我似乎遇到了使用SKTextureAtlas和最近邻居过滤纹理的问题.当我使用没有SKTextureAtlas的最近邻居过滤时它工作正常,但是当我使用SKTextureAtlas时,所有内容都只是改为线性过滤.

没有SKTextureAtlas的代码和结果:

SKTexture* texture = [SKTexture textureWithImageNamed:@"grass"];
texture.filteringMode = SKTextureFilteringNearest;
SKSpriteNode* node = [SKSpriteNode spriteNodeWithTexture:texture size:CGSizeMake(512,512)];
Run Code Online (Sandbox Code Playgroud)

应该产生最近邻过滤和做 在此输入图像描述

SKTextureAtlas的代码和结果:

SKTextureAtlas* atlas = [SKTextureAtlas atlasNamed:@"myAtlas"];
SKTexture* texture = [atlas textureNamed:@"grass"];
texture.filteringMode = SKTextureFilteringNearest;
SKSpriteNode* node = [SKSpriteNode spriteNodeWithTexture:texture size:CGSizeMake(512,512)];
Run Code Online (Sandbox Code Playgroud)

应该产生最近邻过滤而不是 在此输入图像描述

有什么建议?

The*_*erg 4

我一直在努力解决同样的问题。

似乎当您为来自 SKTextureAtlas 的 SKTexture 设置过滤模式时,它会为来自该图集的所有内容设置过滤模式。

我最终通过制作两个 SKTextureAtlas(AtlasLinear 和 AtlasNearest)来解决这个问题。一个用于我的普通艺术作品,另一个用于像素艺术。这起到了魅力的作用。

然而,对于非常小的图集,我有时会遇到奇怪的小像素错误。如果您出现此情况,则实际上有助于将一些大的白色块 png 添加到您的像素艺术图集中。

祝你好运。