在Unity

时间:2016-09-21 10:24:10

标签: c# unity3d

我有一个public Image[]可以从 Unity编辑器中获得场景中存在的许多Image UI

现在我想通过它的名字从场景中停用其中一个或多个。

但我无法通过字符串名Images访问此数组项。仅我可以通过int编号访问Images[0]等索引

我在论坛上尝试了Dictionary课程和其他解决方案,但我找不到办法。

我该怎么做?

1 个答案:

答案 0 :(得分:3)

对于数组

使用for循环遍历图像阵列,然后比较名称。如果匹配,请将其停用。

public Image[] image;

void activateImage(string imageName, bool enable)
{
    for (int i = 0; i < image.Length; i++)
    {
        if (image[i].name == imageName)
        {
            image[i].enabled = enable;//Good for performace
            // OR
            //image[i].gameObject.SetActive(enable);
        }
    }
}

<强>用法

激活

activateImage("nextImage", true);

停用

activateImage("nextImage", false);

For Dictionary

Dictionary<string, Image> image = new Dictionary<string, Image>();

void activateImage(string imageName, bool enable)
{
    if (image.ContainsKey(imageName))
    {
        image[imageName].enabled = enable;//Good for performace
        // OR
        //image[imageName].gameObject.SetActive(enable);
    }
}

将图像添加到词典:

public Image myImage;
image.Add(myImage.name, myImage);

image.Add("myImageName", myImage);