在按下按钮时迭代列表
本文关键字:迭代 列表 按钮 | 更新日期: 2023-09-27 18:02:32
我的列表中有3个对象,但我只希望第一个元素是活动的。然后,当我按下按钮时,我希望列表向前移动一个,因此列表中的下一个项目现在是活动的,而第一个项目不是。
我有以下代码:
void OnClick()
{
for(int i = 0; i < activateTexture.Count; i++)
{
activateTexture[0].SetActive(true);
}
}
这只显示列表中的第一个项目(这是我想要的),但我一直在研究如何通过列表移动。
谁能帮帮我。
你将初始纹理设置为活动多次。相反,跟踪当前的一个。然后,每次代码被触发时,它可以停用它所在的那个,然后移动到下一个并激活它。
(下面有过多注释的代码,只是为了确保它是关于这个答案的解释。我通常不会在我的代码中添加这样的注释)
void Start()
{
// Initialize all textures to be inactive
for(int i = 0; i < activateTexture.Count; i++)
{
activateTexture[i].SetActive(false);
}
// Activate the first texture
activateTexture[0].SetActive(true);
}
// Store the index of the currently active texture
private int activeTextureIndex = 0;
void OnClick()
{
// Disable the current
activateTexture[activeTextureIndex].SetActive(false);
// Increment the index
activeTextureIndex = (activeTextureIndex + 1) % activateTexture.Length;
// Activate a texture based upon the new index
activateTexture[activeTextureIndex].SetActive(true);
}
还请注意,我使用了模运算符%
来循环列表。
编辑:由于担心整数溢出而更正