【发布时间】:2015-07-12 01:29:50
【问题描述】:
我使用了一个相对较小的图像(44 像素高)并将其放大以获得像素艺术外观。我试图将过滤模式更改为最近,这样抗锯齿就会消失,但它没有。它看起来边缘模糊。我在背景上尝试了同样的方法,得到了相同的结果。
let myNode = SKSpriteNode()
class GameScene: SKScene {
func makeNode() {
myNode.position = CGPoint(x: self.frame.size.width/2, y: self.frame.size.height/2)
myNode.size = CGSize(width: 200, height: 200)
myNode.texture = SKTexture(imageNamed: "image")
myNode.texture!.filteringMode = .Nearest
return self.addChild(myNode)
}
}
override func didMoveToView(view: SKView) {
makeNode()
}
【问题讨论】:
-
Sprite Kit 的过滤模式很棘手,因为存在一些错误。首先,您是否使用了 Atlas。如果您在将纹理分配给节点之前对其设置过滤模式,也会发生什么情况。
-
我没有尝试在这里使用 atlas ,是吗?第二个建议似乎很有希望,但正如我所见,它没有奏效。我猜你的意思是:
...let texture = SKTexture(imageNamed: "image")texture.filteringMode = .NearestmyNode.texture = texture...非常感谢您的回复!非常感谢您的时间和精力! -
嗯,我不确定。我知道人们以前已经让它工作了。你在设备上运行吗?什么版本?
-
我使用的是 2014 年末的视网膜 MacBook Pro 或 iPhone 5S。但我想我会在 Photoshop 中放大图像,保持像素化的外观,然后在应用程序中使用它。我认为如果我使用小图像并用代码放大它们会提高性能。
-
是的,它不起作用,这很糟糕。如果你愿意,你可以试试 Xcode 7/iOS 9,看看他们是否修复了它。这些是强大的设备,你应该可以使用更大的纹理。无论如何,您需要担心的是非常昂贵的计算和绘制调用的数量。并且在某种程度上是节点树的深度。
标签: swift sprite-kit antialiasing skspritenode sktexture