问题标签 [skeffectnode]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
139 浏览

ios - SKEffectNode walk through children crashed (iOS10 Spritekit)

我有一个 SKEffectNode 包含一个节点,该节点将随着时间动态地改变它的子节点(删除子节点并经常动态添加子节点)。而且我一直在 Fabric 上收到此崩溃日志(仅在 iOS10 上发生),但是我无法在自己的设备上重现它。该日志似乎正在尝试计算该节点的边界并得到一些错误。有没有人有同样的情况?请给我合理的建议和意见。谢谢!

0 投票
0 回答
367 浏览

swift - 在 Swift/SpriteKit 中,你可以在 CropNode 中使用 ShapeNode 作为蒙版吗

我一直在尝试SKShapeNode使用 a 将随机形状与纹理结合起来,SKCropNode但它似乎不起作用。我假设SKCropNodes仅适用于位图图形,例如 PNG。

在这种情况下,什么都不会出现。如果我不设置:

cropSprite 显示为添加了纹理的普通精灵。

有任何想法吗?

非常感谢,千瓦

0 投票
2 回答
364 浏览

swift - 核心图像 NSException 崩溃,为什么/什么?

在 SpriteKit 中,使用一个效果节点,我将一个简单的渐变应用到一个简单的矩形。

这似乎工作正常,但是将其添加到场景中会导致NSException.

请:我做错了什么?


这是紧缩的输出:


更新:进一步的混乱!

尽管 Benzi 的回答有效,但我很困惑。

在他的技术中,三件事令人困惑:

困惑1:

对我来说,这看起来像 inputImage 没有初始化,没有创建,只是定义为 CIImage 类型 - 可选!所以它还不存在。

困惑2:

这个闭包是如何工作的,为什么会在这里?

困惑3:

这就是说让 inputImage 成为 CIImage,但它的内容和定义从何而来?大小、形状等……从哪里来?

SKSpriteNode我们知道它以某种方式获取传递到这里的节点实例的详细信息,因为它被使用了 - 就在这里:

SKSpriteNode但是作为子类的添加如何SKEffectNode成为子类中的inputImageCIFilter

0 投票
0 回答
319 浏览

ios - 将 SKSpriteNode 添加到 SKEffectNode 时金属崩溃

使用以下代码SKSpriteNode向 a添加简单时出现此崩溃SKEffectNode

我没有在我的项目中的其他任何地方触及这些节点,当我更改精灵时,错误中的值(必须是 <= 值)会发生变化。

编辑:我已经用一个简单的精灵图像替换了spriteNodeWithColor:Size:(<=value)总是精灵大小的两倍。还应该注意的是,SKScene 被用作 SceneKit 场景中的叠加层。

我使用以下代码创建了一个单独的 SKScene,但仍然导致相同的错误。

编辑 2:我刚刚将上述场景作为默认 SceneKit 项目的叠加层进行了测试,它因相同的错误而崩溃。

编辑 3:我已经使用 swift 复制了这个。错误报告已向 Apple 提出。

0 投票
1 回答
243 浏览

swift - 使用 SKEffectNode 添加模糊的 FPS 问题

如果有更好的方法来创建模糊效果?我目前的做法似乎会产生 FPS 问题,尤其是在旧手机上。似乎 blurAmount 越高,FPS 越低。blendMode 可能是这里的原因吗?

当我暂停我的游戏时,我调用 blurScreen() 来执行上面的以下代码。但是,游戏暂停的时间越长,我的 fps 似乎会随着时间的推移而下降。我尝试取出 blurScreen() 并且 FPS 问题消失了。当 blurScreen() 只被调用一次时,FPS 如何随时间下降?

编辑:

这是 touchesEnded() 中的代码

更新方法

0 投票
0 回答
583 浏览

ios - SpriteKit:背景虚化 SKNode

如何模糊单个透明 SKNode 的背景,同时保持主背景清晰?我想要这样的东西:

在此处输入图像描述

背景是单个根 SKNode,并且添加了另一个 SKNode 作为子节点。子节点是透明的,具有模糊效果。

我想使用 SKEffectNode 来产生模糊,但是 SKEffectNode 模糊了一个子节点,在这种情况下,我需要模糊节点(根节点)。

此外,这更复杂,因为下面的模糊背景会受到物理模拟并且可以移动,因此如果可能的话,背景模糊需要实时更新。

这样的问题描述了整个背景的模糊,而这个很好的答案结合了 SKEffectNode 和 SKCropNode。我觉得这是在正确的轨道上,但我不确定层次结构应该是什么,因为 SKEffectNode 再次需要对孩子进行操作。

0 投票
2 回答
458 浏览

ios - 在 iOS 上,你可以向一个 SpriteKit 节点添加多个 CIFilter 吗?

在 iOS 上,你可以添加多个CIFilter到 aSKEffectsNode吗?

CIFilterGenerator似乎是我想要的,但它在 iOS 上不可用。

我知道您可以通过将一个的输出作为下一个的输入传递来在图像上使用多个过滤器,但是如果您想影响非图像节点,这将无济于事。

这是否意味着我必须创建一个人为的层次结构SKEffectNode并为它们中的每一个添加一个过滤器,而我的实际内容位于最底部?有没有更好的办法?

0 投票
1 回答
651 浏览

arrays - 在 ARKit 上显示具有透明背景的视频

我试图简单地显示一个视频,删除其背景的一部分,这意味着它是透明的。我已经尝试了 Stack Overflow 提供的几种方法,但到目前为止它们都低于标准。最接近我正在寻找的结果的是这个链接中的那个:ARKit / SpriteKit - set pixelBufferAttributes to SKVideoNode or make transparent pixel in video (chroma-key effect) another way

然而,尽管这种方法是明智的,而且它似乎对提出问题的人有用,但在我的情况下,它只会把整个视频变成白色。

我的策略是显示视频并添加效果如下:

就我而言,我正在尝试去除红色。有没有其他方法可以实现这一目标?

0 投票
2 回答
45 浏览

filter - 在 Swift 5.0 中对 SKSpriteNode 应用渐变效果

iOS 14、斯威夫特 5.x

尝试使用 SKEffect 向 spriteNode 添加渐变。代码编译,但随后崩溃,我是否在这里尝试了不可能的事情。

编译,但随后崩溃并显示此消息...

如您所见,我添加了一个 inputImage?尝试了 UIImage,同样的错误......根本没有尝试任何图像,同样的错误?

0 投票
1 回答
23 浏览

ios - Dissolve SKShader 在模拟器上按预期工作,实际设备上的奇怪行为

我在尝试为 iOS spritekit 创建溶解着色器时遇到了奇怪的行为。我有这个基本着色器,现在只根据噪声纹理的黑色值改变纹理的 alpha:

请注意,此代码在spriteSheet预加载回调中调用。

在模拟器上,这始终如一地给出预期的结果,即。到处都有不同 alpha 值的纹理。在实际的 14.5.1 设备上,它会有所不同:

  1. 直接应用于 SKSpriteNode - 它使整个纹理半透明,具有单个值
  2. 应用于以 SKSpriteNode 作为其子级的 SKEffectNode - 我看到整个 spritesheet 的小型化部分
  3. 与 2 相同,但纹理是从 spritesheet 外部的图像创建的 - 它在模拟器上工作(和预期的一样)

为什么它会这样?考虑到这需要在 iOS 9 设备上运行,我担心 3 无法在任何地方运行。因此,我想了解它为什么会发生,并且理想情况下要确保强制 1 或至少 2 在所有设备上工作。