我有一個public Image[]
可以從Unity編輯器獲取場景中存在的許多Image UI
。在Unity中按字符串名稱訪問數組索引
現在我想從它的名字中去除它們中的一個或多個。
但我不能用的Images
字符串名稱訪問此數組項。只有我可以通過整型數字索引訪問諸如Images[0]
我之前在論壇上Dictionary
類和其他解決方案嘗試,但我無法找到一種方式。
我該怎麼做?
我有一個public Image[]
可以從Unity編輯器獲取場景中存在的許多Image UI
。在Unity中按字符串名稱訪問數組索引
現在我想從它的名字中去除它們中的一個或多個。
但我不能用的Images
字符串名稱訪問此數組項。只有我可以通過整型數字索引訪問諸如Images[0]
我之前在論壇上Dictionary
類和其他解決方案嘗試,但我無法找到一種方式。
我該怎麼做?
對於陣列:
使用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);
對於字典:
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);
謝謝。問題完全解決 –
linq不會傷害btw,但良好的答案upvoted – LumbusterTick
@LumbusterTick謝謝你,你是對的。這只是當我不使用Unity的** only **解決方案時,我避免使用linq。我在正常的Windows窗體應用程序中使用linq a-lot,但除非真的需要,否則不能在Unity中使用。原因是性能和內存分配。 – Programmer
那麼,使用'字典<字符串,圖像>'聽起來像前進的方向。你從哪裏陷入困境?創建字典,還是使用它?你能夠使用LINQ嗎?如果是這樣,只是'var dictionary = Images.ToDictionary(image => image.Name);'或類似應該工作... –