我可以这样做吗?
Array.IndexOf(Array, (index.propery == true))
其中index等于IndexOf自己的增量器。
为什么我要问:
我正在使用Unity,我有许多对象,它们是游戏中较大或整个对象的组成部分。我想使用Unity的编辑器将这些对象分配给游戏中的变量。我后来需要迭代这些对象。我想通过将它们放在一个数组中来实现这一点(因为统一仍然可以编辑这些)。问题开始于数组中我无法使用含义完整的索引访问对象。我想按名称引用组件,Unity不能访问字典(并且会产生性能开销)。
我的解决方案,我问是否可能通过使用IndexOf()搜索它来访问数组索引,但是我可以通过在每个索引处使用GameObject的名称进行搜索来实现吗?
GameObject result = Array.IndexOf(GOArray, GOArray[INDEX].gameObject.name == "theoneiwant")
答案 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();
使用您要查找的名称或任何属性。