我在SKScene中定义了几种颜色:
let color1 = UIColor(red: 1, green: 153/255, blue: 0, alpha: 1)
let color2 = UIColor(red: 74/255, green: 134/255, blue: 232/255, alpha: 1)
let color3 = UIColor(red: 0, green: 0, blue: 1, alpha: 1)
let color4 = UIColor(red: 0, green: 1, blue: 0, alpha: 1)
let color5 = UIColor(red: 153/255, green: 0, blue: 1, alpha: 1)
let color6 = UIColor(red: 1, green: 0, blue: 0 , alpha: 1)
这些颜色与我的游戏中具有不同值的图块相对应。一个图块带有color1,依此类推...
将图块添加在一起时,我添加了它们的值,并希望根据它们的值为其赋予新的颜色。
所以我希望图块的值能够影响图块的颜色。
我尝试过:
tile.color = UIColor(named: "color\(value)") ?? color1
但是当我这样做时,它总是使用默认值(color1)。
如何使图块的值影响图块的颜色?
答案 0 :(得分:2)
命名为UIColor
的字母来自xcassets目录中的颜色设置。
您可以根据您的值设置颜色
switch value {
case 2: tile.color = color2
...
default: tile.color = color1
}
或者您可以在xcassets目录中创建颜色集。
答案 1 :(得分:1)
UIColor named:
仅在定义颜色设置资产时有效。由于您的颜色是用代码定义的,因此UIColor named:
只会返回nil
之外的任何内容。
一种解决方案是将颜色放入字典中,而不要使用单独的变量。
let colors: [String: UIColor] = [
"color1" : UIColor(red: 1, green: 153/255, blue: 0, alpha: 1),
"color2" : UIColor(red: 74/255, green: 134/255, blue: 232/255, alpha: 1),
"color3" : UIColor(red: 0, green: 0, blue: 1, alpha: 1),
"color4" : UIColor(red: 0, green: 1, blue: 0, alpha: 1),
"color5" : UIColor(red: 153/255, green: 0, blue: 1, alpha: 1),
"color6" : UIColor(red: 1, green: 0, blue: 0 , alpha: 1),
]
然后您可以将颜色设置为:
tile.color = colors["color\(value)"] ?? colors["color1"]!