SpriteKitNode 背景颜色

SpriteKitNode Background Color

我正在构建一个纸牌游戏,并且有一个图像作为我的 SpriteKit 节点的纹理。该图像是卡片插图的 pdf 图像,我想设置卡片的背景颜色(插图周围的空白 space)。我的图像只是卡片的插图,没有任何背景细节。我如何为此设置背景?在 SKSpriteNode init 中设置 "color" 属性只会更改我的图像对象的颜色。如何访问图像后面 "blank space" 的颜色和纹理,同时保持 super.init 中设置的宽度和大小?

我不想更改所有 pdf 并在背面添加白色图层,因为我可能希望在玩游戏时对卡片背景进行一些自定义颜色更改。我尝试在 init 函数中添加一个 SKShapeNode(下面的示例),但从技术上讲,它覆盖在我的 Card SKSpriteNode 之上,然后用户无法点击实际的 "Card"。看起来这应该是相当简单的,但我遇到了很多麻烦。

import SpriteKit

class Card: SKSpriteNode {

    init(image: String) {
        super.init(texture: SKTexture(imageNamed: image), color: .clear,
                   size: CGSize(width: K.cardSize[0], height: K.cardSize[1]))

        //Background
        let background = SKShapeNode(rectOf: CGSize(width: K.cardSize[0], height: K.cardSize[1]), cornerRadius: 15)
        background.fillColor = UIColor.white
        background.zPosition = -10
        addChild(background)
    }

}

像这样创建2个SKSpriteNode

class Card: SKSpriteNode {

    init(imageName: String) {
       let card = SKSpriteNode(imageNamed:imageName)
       //Create the rounded corner image without resorting to SKShapeNode
       UIGraphicsBeginImageContext(card.size)
           let context =  UIGraphicsGetCurrentContext()
           context.clear(rect)
           context.setFillColor(UIColor.white.cgColor)
           let rect = CGRect(origin: .zero, size:size)
           let path = UIBezierPath(roundedRect:rect, cornerRadius:0.15)
           path.fill()
           let image = context.makeImage();
       UIGraphicsEndImageContext();

       super.init(texture:SKTexture(cgImage:image))        

       card.isUserInteractionEnabled = false
       addChild(card)
    }

}

现在,这会将您的卡片图像视为纹理,而不是交互式节点。