从数组中获取索引,比较数组

时间:2015-11-08 10:13:16

标签: c# arrays unity3d

我可以这样做吗?

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

其中index等于IndexOf自己的增量器。

为什么我要问
我正在使用Unity,我有许多对象,它们是游戏中较大或整个对象的组成部分。我想使用Unity的编辑器将这些对象分配给游戏中的变量。我后来需要迭代这些对象。我想通过将它们放在一个数组中来实现这一点(因为统一仍然可以编辑这些)。问题开始于数组中我无法使用含义完整的索引访问对象。我想按名称引用组件,Unity不能访问字典(并且会产生性能开销)。

我的解决方案,我问是否可能通过使用IndexOf()搜索它来访问数组索引,但是我可以通过在每个索引处使用GameObject的名称进行搜索来实现吗?

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

2 个答案:

答案 0 :(得分:1)

你有Array.Find:

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

注意它不是很有效率。如果你想要速度,最好使用字典,也许在启动时从数组中预先构建你的字典。

答案 1 :(得分:0)

尝试获取索引

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

<强>更新
好吧,也许我不太了解你的问题。

  • 如果您的GameObjects唯一名称,您可以通过他们的名字找到它们,它快速可靠:

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

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