我的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)

这些颜色对应于我的游戏中具有不同值的瓷砖。一块瓷砖配颜色1等等。。。
当这些瓷砖加在一起时,我会添加它们的值,并根据它们的值给它们一个新的颜色。
所以我想让瓷砖的价值影响瓷砖的颜色。
我试过:
tile.color = UIColor(named: "color\(value)") ?? color1

但当我这样做时,它总是使用默认值(color1)。
如何使瓷砖的值在瓷砖的颜色中起作用?

最佳答案

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"]!

关于swift - 如何将字符串转换为UIColor(Swift),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56105046/

10-15 01:45