C# 从数组中获取索引,比较数组中每个索引的属性

C# 从数组中获取索引,比较数组中每个索引的属性,c#,arrays,unity3d,C#,Arrays,Unity3d,我可以这样做吗? Array.IndexOf(Array, (index.propery == true)) 其中,index等于IndexOf自身的增量 我为什么问这个问题: 我使用Unity,我有许多对象,它们是游戏中一个更大或整个对象的组成部分。我想使用Unity的编辑器将这些对象分配给游戏中的变量。稍后我需要迭代这些对象。我希望将它们放在一个数组中(因为unity仍然可以编辑它们)。问题从数组中我无法访问具有完整索引的对象开始。我想按名称引用组件,Unity无法访问字典(并且会产生性能

我可以这样做吗?

Array.IndexOf(Array, (index.propery == true))
其中,index等于IndexOf自身的增量

我为什么问这个问题:
我使用Unity,我有许多对象,它们是游戏中一个更大或整个对象的组成部分。我想使用Unity的编辑器将这些对象分配给游戏中的变量。稍后我需要迭代这些对象。我希望将它们放在一个数组中(因为unity仍然可以编辑它们)。问题从数组中我无法访问具有完整索引的对象开始。我想按名称引用组件,Unity无法访问字典(并且会产生性能开销)

我的解决方案,我想问的是,是否可以通过使用IndexOf()搜索数组索引来访问它,但是我可以通过在每个索引处使用游戏对象的名称来搜索它吗

GameObject result = Array.IndexOf(GOArray, GOArray[INDEX].gameObject.name == "theoneiwant")
您有一个数组。查找:

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

请注意,这不是很有效。如果您想提高速度,最好使用字典,也许可以在启动时从数组中预构建字典。

尝试使用此方法获取索引

var index = Array.FindIndex(yourArray, gameobj => gameobj.propery == true);  
更新
好吧,也许我不太理解你的问题

  • 如果您的
    游戏对象
    具有唯一的名称,您只需通过名称即可找到它们,这是快速可靠的:

    public GameObject targetObj;
    targetObj = GameObject.Find("objectname");
    
  • 但如果他们没有,您可以创建一个游戏对象列表,将您的游戏对象分配给该列表,然后使用以下代码进行搜索:

    public List<GameObject> myObjList = new List<GameObject>();  
    public GameObject targetObj;
    targetObj= myObjList.Where(x => x.name == "objectname").SingleOrDefault();  
    
    public List myObjList=new List();
    公共游戏对象targetObj;
    targetObj=myObjList.Where(x=>x.name==“objectname”).SingleOrDefault();
    

使用名称或任何要查找的属性。

可以使用lambda表达式