所以在我的项目中,我有一个 SKEffectNode,用于在我的一些 spriteNode 周围提供发光效果。我使用 spriteNode (blurNode) 来获取障碍物的颜色,然后将其提供给 effectNode。这工作正常。
let blurNode = SKSpriteNode(imageNamed: "neonLine.png")
blurNode.color = obstacle.color
blurNode.colorBlendFactor = 1.0
blurNode.size = CGSize(width: obstacle.size.width + 30, height: obstacle.size.height + 30)
let effectNode = SKEffectNode()
effectNode.shouldRasterize = true
obstacle.addChild(effectNode)
effectNode.addChild(blurNode)
effectNode.filter = CIFilter(name: "CIGaussianBlur", withInputParameters: ["inputRadius":30])
effectNode.alpha = 1.0
我的问题发生在这里。
let colorFadegreen = SKAction.sequence([SKAction.colorize(with: UIColor(red: 0, green: 0.6471, blue: 0.3569, alpha: 1.0), colorBlendFactor: 1.0, duration: 3)])
obstacle.removeAllActions()
obstacle.run(colorFadegreen)
blurNode.removeAllActions()
blurNode.run(colorFadegreen)
我想要做的是让障碍物周围的“发光”随着障碍物改变颜色。这正是发生的事情;但是,当我这样做时,我的帧速率下降到 30fps。
所以,我的问题是有人知道如何提高这项任务的性能吗?或者是否有另一种方法可以做到这一点。
我想到的一个想法是在photoshop中手动模糊“neonLine.png”,然后像这样将它添加到模糊节点中
let blurNode = SKSpriteNode(imageNamed: "bluredNeonLine.png")
。唯一的问题是我永远无法正确模糊它总是看起来很模糊。
任何帮助将不胜感激。谢谢!
编辑:
这是我项目中发光的一些照片:
这是发光和改变颜色的线条: