更改SKSpriteNode的颜色属性不会改变其颜色

更改SKSpriteNode的颜色属性不会改变其颜色

问题描述:

我正在加载最初为我的某些精灵呈现红色的纹理。不过,我想改变这种颜色为白色,通过我的方法loadPauseIcons():更改SKSpriteNode的颜色属性不会改变其颜色

func loadPauseIcons() { 
    let icons = ["HomeIcon", "LevelIcon", "RetryIcon"] 
    let iconSize = CGSize(width: pauseButton.size.width * 0.6, height: pauseButton.size.height * 0.6) 
    var iconY = pauseButton.position.y - pauseButton.size.height 
    for icon in icons { 
     let currentIcon = SKSpriteNode(imageNamed: icon) 
     currentIcon.position = CGPoint(x: pauseButton.position.x, y: iconY) 
     currentIcon.color = .white 
     currentIcon.size = iconSize 
     currentIcon.name = icon 
     currentIcon.zPosition = 11 

     iconY -= pauseButton.size.height * 0.35 + currentIcon.size.height 
     self.addChild(currentIcon) 
     pauseIcons.append(currentIcon) 
    } 
} 

这种方法上的SKScene的的touchesBegan()方法运行。不过,我仍然得到一个红色图标:(房子和三个酒吧)

enter image description here

上午我做错了什么改变我的精灵的颜色?

+0

您不能将红色与白色混合,红色的蓝色和绿色值为0,使用白色图标并将颜色更改为红色 – Knight0fDragon

+0

为什么纹理的颜色是什么?它在屏幕上仍然是红色的 – Knight0fDragon

尝试增加:

currentIcon.colorBlendFactor = 1.0 

缺省情况下一个子画面的colorBlendFactor是0.0,这意味着它的color属性被忽略。 colorBlendFactor的值越接近1.0,精灵的color属性的应用就越多。