我正在尝试为游戏中导致损坏的角色或物体添加光晕。我希望游戏中的“坏”事物发出红光,即尖峰,警卫等。我使用下面的代码,但即使将rasterize设置为true,性能也非常糟糕。当我添加效果时,性能从60fps快速下降到~30fps。发光效果需要在不同形状的精灵上,即。圆形,三角形,矩形,人等。我对其他方法持开放态度,虽然下面的代码给了我想要的确切视觉效果。如果我可以获得要执行的代码,我想在“好”的对象上发出绿光。
我还通过仅向左侧和右侧添加1.5个场景的节点来减少“坏”SKNode的数量。这种变化似乎没有帮助。问题似乎是当我真正来到特别沉重的SKNodes和SKNodes / SKSpriteNodes时,添加了效果。
glowAtlas = SKTextureAtlas(named: "GlowTextures")
// create a glowing effect
func getGlow(imageName: String, imageSize: CGSize, glowColor: SKColor) -> SKEffectNode {
试
let glow = SKSpriteNode(imageNamed: imageName)
或
let texture = glowAtlas.textureNamed(imageName)
let glow = SKSpriteNode(texture: texture)
...
glow.size = imageSize
glow.color = glowColor
glow.colorBlendFactor = 1.0
// Create an effects node with a gaussian blur filter
let effectsNode = SKEffectNode()
effectsNode.shouldRasterize = true
effectsNode.shouldEnableEffects = true
let filter = CIFilter(name: "CIGaussianBlur")
// Set the blur amount. Adjust this to achieve the desired effect
let blurAmount = 5.0
filter!.setValue(blurAmount, forKey: kCIInputRadiusKey)
effectsNode.filter = filter
effectsNode.blendMode = .Alpha
effectsNode.addChild(glow)
return effectsNode
}