在按下按钮时迭代列表

本文关键字:迭代 列表 按钮 | 更新日期: 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);
}

还请注意,我使用了模运算符%来循环列表。

编辑:由于担心整数溢出而更正