- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
所以在我的项目中,我有一个 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”,然后像这样将其添加到模糊节点让 blurNode = SKSpriteNode(imageNamed: "bluredNeonLine.png")
。唯一的问题是我永远无法正确处理它总是看起来很模糊。
如有任何帮助,我们将不胜感激。谢谢!
编辑:
这是我项目中发光的一些照片:
这里是发光和线条改变颜色:
最佳答案
关于发光的性能问题的三个答案:
在所有情况下,您最好渲染一个可以随心所欲淡出的白光,然后对其应用颜色混合更改,因为 SpriteKit 内置了此功能,并且在我进行的几次测试中它的性能相当不错完毕。这称为着色:
您可以更改混合量并设置动画:https://developer.apple.com/reference/spritekit/skspritenode/1519780-colorblendfactor
颜色与纹理混合:https://developer.apple.com/reference/spritekit/skspritenode/1519639-color
关于swift - 如何提高 SKEffectNode 性能(Swift)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40613578/
所以我的游戏中有一个暂停按钮,当您按下它时,场景会暂停,除了一个 SKNode(暂停菜单)之外的所有内容都会变得模糊。我通过创建一个具有过滤器的 SKEffectNode 并向其添加除暂停菜单以外的所
SKEffectionNodes 有一个 shouldRasterise “开关”,可以将它们烘焙到位图中,并且在受效果影响的底层节点发生更改之前不会更新它们。 但是我找不到从这个光栅化“图像”创建
我正在尝试调整一些效果,但我需要使用 SKEffectNode(),所以我编写了以下代码: let rocketPath = NSBundle.mainBundle().pathForResource
如果选择了一个节点,我想显示一个效果节点。如果没有,我想关闭/删除该效果。 (我将一个节点设置为在 touchesBegan 中选中。) 我使用下面的代码。打开和关闭效果节点让我很困惑,因为我将主节点
所以在我的项目中,我有一个 SKEffectNode,我用它在我的一些 spriteNode 周围提供发光效果。我使用 spriteNode (blurNode) 获取障碍物的颜色,然后将其提供给 e
我试图在我的程序中模糊一个 SKShapenode。但是,我希望 shapenode 逐渐模糊,持续时间约为 1 秒。我该如何实现?当前的代码会立即模糊它。 func generateAnimatio
我正在尝试子类化 CIFilter 以便在 SpriteKit 游戏中使用,如 iOS Games by Tutorials 一书中所述。我创建了继承自 CIFilter 的子类,它有一个 (CIIm
我正在尝试创建一个 SKEffectNode,它将在黑色背景上变成透明的任何绿色像素。出于测试目的,当我弄清楚这些东西时,我想确保以下代码不会在 SKEffectNode 的子树中变成透明的。下面的代
是否有更好的方法来创建模糊效果?似乎我目前的做法会产生 FPS 问题,尤其是在旧手机上。似乎 blurAmount 越高,FPS 越低。混合模式可能是这里的原因吗? if effect
我不确定这是一个错误还是我哪里出错了: 我有一个 A 类,它是 SKScene 的子类,还有一个 B 类,它是 SKEffectnode 的子类。然后我将 B 类添加为 A 类的子类。B 类有一个 b
我有一个 SKSpriteNode,我想在它的边缘周围发出蓝色光以突出显示。我猜我需要让我的 Sprite 成为 SKEffectNode 的 child ,然后创建/应用某种过滤器。 更新:我已经用
我有一个 SKEffectNode,其中包含一个节点,该节点会随时间动态更改其子节点(经常删除子节点并动态添加子节点)。我不断在 Fabric 上获取此崩溃日志(仅发生在 iOS10 上),但我无法在
我有一个 SKVideoNode 作为 SKEffectNode 的子节点,这使我能够使用 1 行 x 1 列的 SKWarpGeometryGrid 来倾斜视频。 当您在每个象限中拖动手指时,在 t
我正在尝试模糊多个 SKNode 对象。为此,我将父 SKEffectNode 的 CIFilter 设置为 @"CIGaussianBlur"。像这样: - (SKEffectNode *)crea
在 Swift 中使用 SpriteKit,我的 GameScene(一个 SKScene)中有这段代码: //Init function let self.itemsLayer = SKNode()
我正在尝试将 SKLabelNode 扭曲为 SKEffectNode 的子节点(文档说您可以这样做),但它会在应用扭曲之前颠倒标签节点。这可能是一个错误,但在我提交之前,我想我会在这里问... 这是
我正在尝试使用以下代码片段创建模糊效果: let glowEffectNode = SKEffectNode() glowEffectNode.shouldRasterize = true
我是一名优秀的程序员,十分优秀!