gpt4 book ai didi

ios - 在 iOS7 上将 CIFilter 应用于 SKEffectNode

转载 作者:搜寻专家 更新时间:2023-11-01 05:42:11 36 4
gpt4 key购买 nike

在 Swift 中使用 SpriteKit,我的 GameScene(一个 SKScene)中有这段代码:

//Init function
let self.itemsLayer = SKNode()

let grayNode = SKEffectNode()
let grayFilter = CIFilter(name: "CIPhotoEffectNoir")
grayFilter.setDefaults()
grayNode.filter = grayFilter
grayNode.addChild(self.itemsLayer)

self.addChild(grayNode)

它应该将我显示的项目以灰色渲染到 itemsLayer 中(稍后在代码中我将一些带有纹理/图像的 SKSpriteNode 添加到 itemsLayer 中)。

在 iOS8 上,它完美运行:我可以看到我所有的项目都是灰色的。

但是在 iOS7 上,SKSpriteNodes(我在 itemsLayer 上的项目)没有显示(就像隐藏一样)。

根据文档和 filterNamesInCategory("CICategoryColorEffect"),CIPhotoEffectNoir 确实存在于 iOS7 中。

编辑 :当我评论过滤器行时,我的 itemsLayer 仍然隐藏。当我将 let grayNode 转换为 SKNode 时,它会返回(但当然没有应用任何效果)。问题似乎出在 grayNode 是 SKEffectNode

最佳答案

经过几个小时的调试,我意识到 iOS7 不会像 iOS8 那样渲染 SKEffectNode

在 iOS7 中,将 SKEffectNode 添加到一堆 SKSpriteNode 层将不会自动将其放在最前面的层(SKSpriteNode 就是这种情况)。

所以我只需要添加一行:

grayNode.zPosition = 10 //Or any number > 1

关于ios - 在 iOS7 上将 CIFilter 应用于 SKEffectNode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27575357/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com