所以在我的項目中我有一個SKEffectNode,我用它來爲我的一些spriteNodes提供發光效果。我使用spriteNode(blurNode)來獲取我的障礙物的顏色,然後將其提供給effectNode。這工作正常。如何提高SKEffectNode性能(Swift)?
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")
。唯一的事情是我永遠無法得到模糊,它總是看起來不對。
任何幫助將非常感激。謝謝!
編輯:
這裏是我的項目中輝光的一些照片:
這裏是輝光和線條改變顏色:
你能告訴我你已經輝光的例子看到你喜歡的樣子?如果是這樣,我可能會告訴你如何用代碼做到這一點。至於提高改變顏色能力的性能,可以將節點柵格化並將顏色更改應用於它,或者將其烘焙到SKTexture中,然後從中創建一個Sprite,然後更改顏色。 – Confused
嘿,我編輯了我的帖子,向你展示我喜歡的發光。另外,我認爲將它烘焙成紋理是我正在尋找的。你是怎樣做的? –
注意,因爲您正在考慮渲染紋理,因此可以使用具有不同半徑和不透明度的多種發光效果,以獲得真正不錯的漸變效果。大多數漂亮的發光都是通過這種方式完成的,將不同尺寸和強度的效果疊加在一起,以獲得指數衰減,這看起來好多了。 – Confused