我在程序中存储了一系列颜色。我在场景中的一个对象后面是列表中的一种颜色。到目前为止,我已经完成了以下工作:
if(Input.GetKeyDown(KeyCode.O))
{
for(int i = 0; i < claddingColor.Count; i++)
{
claddingMaterial.color = claddingColor[i];
}
}
由于我所知道的原因(你可能会发现),这是行不通的,但是我缺乏写下来的口头毅力。
与以下多行相反:
claddingMaterial.color = claddingColor[0];
每个按钮都绑在不同的按钮上,我喜欢这种方式,我可以模仿上面的按钮,但将它绑在一个按钮上。因此,如果我按下0按钮5次,它将循环遍历列表中存储的每种颜色。如果我第六次点击它,它将返回到列表中的第一种颜色。
有人可以帮我实现吗?或者指出一些我可以学习如何为自己做的事情?
答案 0 :(得分:1)
将LastColor属性定义为类成员:
int LastColor;
在你的函数中使用modulo
if(Input.GetKeyDown(KeyCode.O))
{
claddingMaterial.color = claddingColor[(LastColor++) % claddingColor.Count];
}
注意:根据cladColor的类型,使用Count
表示List或Length
表示数组。
答案 1 :(得分:0)
您不需要for循环
int lastStep = 0;
if(Input.GetKeyDown(KeyCode.O))
{
claddingMaterial.color = claddingColor[lastStep++];
if (lastStep == claddingColor.Count)
lastStep = 0;
}