2016-11-15 20 views
2

所以在我的項目中我有一個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")。唯一的事情是我永遠無法得到模糊,它總是看起來不對。

任何幫助將非常感激。謝謝!

編輯:

這裏是我的項目中輝光的一些照片:

Glowing lines on iPhone game

這裏是輝光和線條改變顏色:

Glowing lines on iPhone game

+0

你能告訴我你已經輝光的例子看到你喜歡的樣子?如果是這樣,我可能會告訴你如何用代碼做到這一點。至於提高改變顏色能力的性能,可以將節點柵格化並將顏色更改應用於它,或者將其烘焙到SKTexture中,然後從中創建一個Sprite,然後更改顏色。 – Confused

+0

嘿,我編輯了我的帖子,向你展示我喜歡的發光。另外,我認爲將它烘焙成紋理是我正在尋找的。你是怎樣做的? –

+0

注意,因爲您正在考慮渲染紋理,因此可以使用具有不同半徑和不透明度的多種發光效果,以獲得真正不錯的漸變效果。大多數漂亮的發光都是通過這種方式完成的,將不同尺寸和強度的效果疊加在一起,以獲得指數衰減,這看起來好多了。 – Confused

回答

1

三個答案以關注發光的性能問題:

    1. 使用預渲染的輝光,按照在這個問題你提的是,在Photoshop或類似的位圖編輯器完成,出口與不透明位圖和用作SKSpriteNode質地,可能與添加劑混合以獲得最佳效果和色彩等級。
  • 烘烤該真實通過使其成紋理,然後加載到一個SKSpriteNode,按照本例製造SpriteKit內部的所希望輝光SKEffectNode的質地:https://stackoverflow.com/a/40137270/2109038
  • Rasterise的從SKEffectNode結果,然後希望你到色偏變化不會導致重新渲染。這顯示在一個美妙的擴展,在這裏:https://stackoverflow.com/a/40362874/2109038

在任何情況下,你最好呈現白色的光芒,只要你喜歡淡出,然後將顏色混合更改,因爲SpriteKit具有這種內置功能,並且在我完成的少數測試中具有合理的性能。這被稱爲着色:

您可以更改和動畫都摻入量:https://developer.apple.com/reference/spritekit/skspritenode/1519780-colorblendfactor

和顏色被混合與質地:https://developer.apple.com/reference/spritekit/skspritenode/1519639-color