我几次创建了一个游戏,我想更新代码。有一个分数逐一增加。
每十年,背景都变成另一种颜色。我创建了40种颜色(我使用了扩展来使用Hex颜色):
let color1 = SKColor(netHex: 0xFF6C5C)
let color2 = SKColor(netHex: 0x1297E0)
[...]
let color40 = SKColor(netHex: 0x9E6C4B)
在更新功能中,我为每十年(最多400个)创建了if statement
:
if score == 10 {
self.backgroundColor = color1
}
if score == 20 {
self.backgroundColor = color2
}
[...]
if score == 400 {
self.backgroundColor = color40
}
我想使用for loop
,因为代码行太多了。
首先,我移动了数组中的所有颜色:
let colorsArray = [
SKColor(netHex: 0xFF6C5C), // COLOR 1
SKColor(netHex: 0x1297E0), // COLOR 2
[...]
SKColor(netHex: 0xFF6C5C), // COLOR 40
]
我将此for loop
放入更新功能......:
for let index = 10; index < 400; index + 10 {
if score == index {
let colorIndex = index / 10 - 1
self.backgroundColor = colorsArray[colorIndex]
}
}
...但应用程序崩溃了。
我认为更新功能不是执行此for loop
的正确位置。有人可以帮帮我吗?
谢谢!
答案 0 :(得分:2)
将颜色移动到数组中是正确的方法。
无需迭代循环来确定colorIndex,只需使用整数除法:
let colorIndex = score / 10
self.backgroundColor = colorsArray[colorIndex]
得分为0-9为0,得分为10-19为1,......为390-399得分为39 ......
答案 1 :(得分:0)
实际错误是什么?这将帮助我找出出错的地方。您可以尝试在for循环中注释掉各个行,以尝试隔离问题。
也可以使用modulo(%)来查看数字是否可被10整除而不是循环...