Sprite kit Swift 4 SpriteKit:如何防止父节点的.alpha属性影响子节点?
我有一个SKSpriteNode,它是SKLabelNode的父节点。当我更改SKSpriteNode的.alpha属性时,它也会更改SKLabelNode的.alpha属性。这不是我想要实现的行为,我希望SKSpriteNode的.alpha值为0.5(这是文本的背景),然后SKLabelNode的.alpha值为0.9。有人知道我如何为我的游戏创建这个功能吗 以下是我的标签代码:Sprite kit Swift 4 SpriteKit:如何防止父节点的.alpha属性影响子节点?,sprite-kit,swift4,skspritenode,Sprite Kit,Swift4,Skspritenode,我有一个SKSpriteNode,它是SKLabelNode的父节点。当我更改SKSpriteNode的.alpha属性时,它也会更改SKLabelNode的.alpha属性。这不是我想要实现的行为,我希望SKSpriteNode的.alpha值为0.5(这是文本的背景),然后SKLabelNode的.alpha值为0.9。有人知道我如何为我的游戏创建这个功能吗 以下是我的标签代码: let TheLabel = SKSpriteNode() TheLabel.zPosition
let TheLabel = SKSpriteNode()
TheLabel.zPosition = 6
TheLabel.color = UIColor.black
TheLabel.anchorPoint = CGPoint(x: 0, y: 0)
TheLabel.alpha = 0.5
let TheText = SKLabelNode(fontNamed: "Noteworthy")
TheText.text = "TheUserNameOfTheOpponent"
TheText.fontSize = 25
TheText.fontColor = UIColor.white.withAlphaComponent(0.9)
TheText.zPosition = 7
TheLabel.size.width = TheText.frame.size.width * 1.2
TheLabel.size.height = TheText.frame.size.height * 1.2
TheLabel.position = CGPoint(x: self.frame.width / 2 - (TheLabel.frame.width / 2), y: self.frame.height - 50)
TheText.position = CGPoint(x: TheLabel.size.width / 2, y: TheLabel.size.height / 2)
TheText.horizontalAlignmentMode = .center
TheText.verticalAlignmentMode = .center
self.addChild(TheLabel)
TheLabel.addChild(TheText)
下面是它现在的屏幕截图:
下面是我希望它看起来像什么的屏幕截图:我以前从未使用过SpriteKit,但您可以尝试一下: •代替标签.addChild(TheText)do
self.addChild(TheText)
•然后尝试将文本锚定在标签的正上方不要直接在标签上设置alpha。不要使用下面的代码行,它将在不影响其子视图的情况下对标签应用透明度。您需要更改1行代码
TheLabel.color = UIColor.black.withAlphaComponent(0.2)
这会解决你的问题。并删除这行代码
TheLabel.alpha = 0.5
谢谢,这无疑是一个很好的方法,当然也很有效,不过因为我计划在游戏中添加多个标签,Imrul的答案效果更好,需要的代码更少。