首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何提高SKEffectNode性能?

如何提高SKEffectNode性能?
EN

Stack Overflow用户
提问于 2016-11-15 15:24:24
回答 1查看 884关注 0票数 2

所以在我的项目中,我有一个SKEffectNode,我用它来提供一些spriteNodes的发光效果。我使用spriteNode (blurNode)获取障碍物的颜色,然后将其交给effectNode。这个很好用。

代码语言:javascript
复制
 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

我的问题发生在这里。

代码语言:javascript
复制
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)

我想做的是让障碍物周围的“光辉”与障碍物一起变色。这正是发生的情况;然而,当我这样做时,我的帧速率下降到30 down。

那么,我的问题是,有没有人知道如何提高这项任务的性能?或者还有别的方法可以让我这么做。

我想到的想法之一是手动模糊photoshop中的"neonLine.png“,然后将其添加到像let blurNode = SKSpriteNode(imageNamed: "bluredNeonLine.png")这样的模糊节点中。唯一的问题是,我永远也不可能把模糊的东西弄清楚,它总是看不见的。

任何帮助都将不胜感激。谢谢!

编辑:

以下是我的项目中的一些发光照片:

下面是颜色变化的辉光和线条:

EN

回答 1

Stack Overflow用户

发布于 2016-11-15 16:42:29

有关表演的问题有三个答案:

    1. 使用预渲染的辉光,如您在问题中提到的,在Photoshop或类似的位图编辑器中完成,导出为不透明的位图,并用作SKSpriteNode纹理,可能与添加剂混合,以获得最佳效果,以及颜色等级的味道。

在任何情况下,您最好呈现一个白色的辉光,它会随您的喜好褪色,然后对其应用颜色混合更改,因为SpriteKit已经内置了这个功能,并且在我做过的几个测试中,它是合理的表现。这就是所谓的着色:

您可以更改和动画混合数量:https://developer.apple.com/reference/spritekit/skspritenode/1519780-colorblendfactor

与纹理混合的颜色:https://developer.apple.com/reference/spritekit/skspritenode/1519639-color

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40613578

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档