按下按钮按下列表

时间:2014-05-08 19:34:00

标签: c# list unity3d

我列表中有3个对象,但我只希望第一个元素处于活动状态。然后,当我按下一个按钮时,我希望列表向前移动一个,因此列表中的下一个项目现在处于活动状态,而第一个项目不是。

我有以下代码:

void OnClick()
{
    for(int i = 0; i < activateTexture.Count; i++)
    {
        activateTexture[0].SetActive(true);
    }
}

这只显示列表中的第一项(我想要的),但我仍然在研究如何在列表中移动。

有人可以帮助我。

1 个答案:

答案 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);
}

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

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