是否有任何方法可以使整个场景,包括其所有子节点(不只是背景色)的颜色变深?我正在寻找类似于此代码的效果:

node.color = SKColor.blackColor()
node.colorBlendFactor = 0.25

上面的代码使node的颜色变暗,同时保留原始颜色(除了那些颜色只是较暗)和细节。
但是,据我所知,此代码不适用于场景,它只适用于SKSpriteNode。有什么办法可以把整个场景变暗吗?答案可能是某种过滤器,一种特殊的场景着色方法,或者可能根本就没有办法。有什么帮助吗?
谢谢

最佳答案

当我需要做一些类似于您所要求的事情时,我只需在所有其他事情上添加一个SKSpriteNode,如下所示:

let dimPanel = SKSpriteNode(color: UIColor.blackColor(), size: self.size)
dimPanel.alpha = 0.75
dimPanel.zPosition = 100
dimPanel.position = CGPoint(x: self.size.width/2, y: self.size.height/2)
self.addChild(dimPanel)

只需确保面板的zPosition大于您想使其变暗的所有内容。
这样,您也可以使用SKAction.colorizeWithColor将面板更改为您想要的任何颜色。
要添加面板然后删除它,可以从0开始alpha,然后执行以下操作:
dimPanel.runAction(SKAction.sequence([
    SKAction.fadeAlphaTo(0.75, duration: 3),
    SKAction.fadeOutWithDuration(3)
]))

关于swift - SpriteKit Swift使整个场景变暗,然后将其改回,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34385395/

10-14 22:27