C# 按Unity中的字符串名称访问数组索引

C# 按Unity中的字符串名称访问数组索引,c#,unity3d,C#,Unity3d,我有一个public Image[]可以从Unity Editor获取场景中存在的许多图像UI 现在我想从场景中按名称停用其中一个或多个 但我无法通过图像的字符串名访问此数组项。只有通过图像[0] 我以前在论坛上尝试过字典类和其他解决方案,但我找不到办法 我该怎么做 阵列的: Dictionary<string, Image> image = new Dictionary<string, Image>(); void activateImage(string image

我有一个
public Image[]
可以从Unity Editor获取场景中存在的许多
图像UI

现在我想从场景中按名称停用其中一个或多个

但我无法通过
图像的字符串名访问此数组项。只有通过
图像[0]

我以前在论坛上尝试过
字典
类和其他解决方案,但我找不到办法


我该怎么做

阵列的

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);
    }
}
使用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", false);
对于字典

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


嗯,使用
字典
听起来确实是前进的方向。你在哪里被困的?创建词典,还是使用词典?你能使用LINQ吗?如果是这样,只需
var dictionary=Images.ToDictionary(image=>image.Name)
或类似的方法应该有效…@LumbusterTick谢谢,你是对的。只是我避免使用linq,因为它不是Unity中唯一的解决方案。我在普通的Windows窗体应用程序中大量使用linq,但在Unity中不使用,除非确实需要。原因是性能和内存分配。
public Image myImage;
image.Add(myImage.name, myImage);
image.Add("myImageName", myImage);