我前几次创建了一个游戏,我想更新代码。有一个分数是一个一个递增的。
每隔十年,背景就会变成另一种颜色。我创建了 40 种颜色(我使用了一个扩展来使用十六进制颜色):
let color1 = SKColor(netHex: 0xFF6C5C)
let color2 = SKColor(netHex: 0x1297E0)
[...]
let color40 = SKColor(netHex: 0x9E6C4B)
在更新函数中,我为每个十年(最多 400)创建了一个 if 语句
:
if score == 10 {
self.backgroundColor = color1
}
if score == 20 {
self.backgroundColor = color2
}
[...]
if score == 400 {
self.backgroundColor = color40
}
我想使用for循环
,因为代码行数太多。
首先,我移动了一个数组中的所有颜色:
let colorsArray = [
SKColor(netHex: 0xFF6C5C), // COLOR 1
SKColor(netHex: 0x1297E0), // COLOR 2
[...]
SKColor(netHex: 0xFF6C5C), // COLOR 40
]
我将这个 for 循环
放在更新函数中...:
for let index = 10; index < 400; index + 10 {
if score == index {
let colorIndex = index / 10 - 1
self.backgroundColor = colorsArray[colorIndex]
}
}
...但是应用程序崩溃了。
我认为更新函数不是执行此 for 循环
的正确位置。任何人都可以帮助我吗?
谢谢!
最佳答案
将颜色移动到数组中是正确的方法。
不需要通过循环迭代来确定colorIndex,只需使用整数除法即可:
let colorIndex = score / 10
self.backgroundColor = colorsArray[colorIndex]
0-9 的分数为 0,10-19 的分数为 1,... 390-399 的分数为 39...
关于xcode - 检查分数是否是 10 的倍数 - Swift,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33572259/