Ios 非视网膜SKSpriteNode纹理是像素化的

Ios 非视网膜SKSpriteNode纹理是像素化的,ios,objective-c,sprite-kit,Ios,Objective C,Sprite Kit,我正在创建一个圆形精灵节点,并在非视网膜版本中进行像素化。我不会在代码中的任何地方更改精灵节点的大小。我正在Photoshop中创建非视网膜版本,方法是转到File>saveforweb>将大小更改为50%。每个球是一个50x50 PNG 下面是我如何实例化每个球 Ball *ball = [Ball spriteNodeWithImageNamed:@"ball"]; Ball是一个SKSpriteNode子类。下面的图像是在模拟器中以100%的比例拍摄的。非视网膜图像在模拟器和物理设备中进

我正在创建一个圆形精灵节点,并在非视网膜版本中进行像素化。我不会在代码中的任何地方更改精灵节点的大小。我正在
Photoshop
中创建非视网膜版本,方法是转到
File>saveforweb>将大小更改为50%。每个球是一个50x50 PNG

下面是我如何实例化每个球

Ball *ball = [Ball spriteNodeWithImageNamed:@"ball"];
Ball是一个
SKSpriteNode
子类。下面的图像是在模拟器中以100%的比例拍摄的。非视网膜图像在模拟器和物理设备中进行像素化。如何使此资产看起来更干净

视网膜(“ball@2x.png):


非视网膜(“ball.png”)

这可能无法准确回答原始问题,因为引用的图像是50x50,但对于高度与宽度之比不为1:1的图像,它有助于首先获得实际图像的尺寸并设置纹理

您可以在Swift中这样做:

let image = imageAsset
let texture = SKTexture(image: image)
let factor = 0.5
let size = CGSize(width: image.size.width * factor, height: image.size.height * factor)
let node = SKSpriteNode(texture: texture, size: size)

如果要将图像大小调整50%,则可以使用上面的方法。如果想要完整大小的图像,则只需使用
image.size
作为
SKSpriteNode
的size参数,而不需要使用
factor
变量。

当您说它们看起来像像素化时,您是说它们看起来不同于a实际资产?与“ball.png”相比,您的“ball.png”是什么样子的ball@2x.png?您是否尝试将视网膜资源用于非视网膜,并创建一个新的视网膜资源,其大小是原始资源的两倍ball@2x.png是50x50像素,“ball.png”是的25x25版本ball@2x.png“.”ball.png在finder、photoshop等中没有像素化。。它只在iPad中被像素化(非视网膜)。你在实际设备上验证过吗?@learncos2d是的,我在iPad3和iPad Mini上试过。