我列表中有3个对象,但我只希望第一个元素处于活动状态。然后,当我按下一个按钮时,我希望列表向前移动一个,因此列表中的下一个项目现在处于活动状态,而第一个项目不是。
我有以下代码:
void OnClick()
{
for(int i = 0; i < activateTexture.Count; i++)
{
activateTexture[0].SetActive(true);
}
}
这只显示列表中的第一项(我想要的),但我仍然在研究如何在列表中移动。
有人可以帮助我。
答案 0 :(得分:1)
您将多次初始纹理设置为活动状态。相反,跟踪当前的一个。然后,每次触发代码时,它都可以取消激活代码,然后移动到下一个代码并激活它。
(以下过度评论的代码只是为了确保对此答案进行解释。我通常不会在我的代码中添加这样的评论)
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);
}
另请注意,我已使用模运算符%
来循环列表。
编辑:由于担心整数溢出而更正