2015-11-08 54 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好的,我更新了我的答案 –