2015-11-08 53 views
1

我可以這樣做嗎?從數組中獲取索引,比較數組中的每個索引的屬性

Array.IndexOf(Array, (index.propery == true)) 

其中index等於IndexOf自己的增量值。

爲什麼我問
我使用的是團結,我有很多這是一個更大的,或整體,物體在遊戲中的組件對象。我想使用Unity的編輯器將這些對象分配給遊戲中的變量。我後來需要遍歷這些對象。我想通過將它們放在一個數組中來做到這一點(因爲統一可以編輯它們)。這個問題開始於一個數組中,我不能用含義完全索引訪問對象。我想通過名稱來引用組件,Unity不能訪問字典(並導致性能開銷)。

我問我是否可能的解決方案是通過使用IndexOf()來搜索數組索引來訪問數組索引,但我可以通過在每個索引處搜索GameObject的名稱來完成它嗎?

GameObject result = Array.IndexOf(GOArray, GOArray[INDEX].gameObject.name == "theoneiwant") 
+0

您可以使用lambda表達式 –

回答

1

你Array.Find:

GameObject result = Array.Find(GOArray, g => g.name == "theoneiwant"); 

只是要注意它是不是很有效。如果你想要速度,你最好使用字典,也許在啓動時從數組中預先建立你的字典。

0

嘗試一下本作獲得指數

var index = Array.FindIndex(yourArray, gameobj => gameobj.propery == true); 

UPDATE
OK,也許我不明白你的問題非常好。

  • 如果你的GameObjects獨特的名稱,你可以簡單地通過他們的名字找到他們,它的快速,可靠:

    ​​
  • ,但如果他們沒有,你可以創建GameObjects的列表,將您的gameObjects分配給它,然後用此代碼搜索它們:

    public List<GameObject> myObjList = new List<GameObject>(); 
    public GameObject targetObj; 
    targetObj= myObjList.Where(x => x.name == "objectname").SingleOrDefault(); 
    

使用名稱或您想要查找它們的任何屬性。

+0

@theMayer好的,我更新了我的答案 –