要在SpriteKit中创建一个按钮,我创建了一个带有SKShapeNode的圆角矩形,然后在它上面放置了一个SKLabel。
我希望标签下的背景随着它下面的任何内容而改变。所以在图片中,T,E和A的一半都是紫色的。
有没有办法让字体中途变色?或以某种方式裁剪白色矩形纹理与放置在其上的SKLabel。这种方式没有标签,而是从纹理中剪下标签。基本上,我希望字体颜色是它背后的任何东西。
我不得不以某种方式导入图像和代码。
答案 0 :(得分:4)
Knight0fDragon在评论中有理由,这是一个很好的建议。没有textureFromNode
,您可以执行另一种解决方案。
您可以使用背景和标签准备cropNode
,然后使用按钮和cropNode进行另一次背景克隆:
import SpriteKit
class GameScene: SKScene {
override func didMove(to view: SKView) {
let background = SKSpriteNode.init(imageNamed: "background.png")
background.zPosition = 1
let background2 = background.copy() as! SKSpriteNode
//label
let titleLabel = SKLabelNode(fontNamed: "AvenirNext-Bold")
titleLabel.fontSize = 150
titleLabel.fontColor = SKColor.black
titleLabel.text = "RATE"
titleLabel.horizontalAlignmentMode = .center
titleLabel.zPosition = 5
titleLabel.blendMode = .subtract
//cropNode
let cropNode = SKCropNode()
cropNode.addChild(background)
cropNode.maskNode = titleLabel
self.addChild(cropNode)
cropNode.zPosition = 5
//button
let button = SKShapeNode(rect: CGRect(x: -300, y: -50, width: 600, height: 200), cornerRadius: 100)
button.zPosition = 4
button.fillColor = SKColor.white
self.addChild(background2)
self.addChild(button)
}
}
<强>输出强>:
另一个要测试的背景:
输出2: