2 回答
TA贡献1712条经验 获得超3个赞
GameObject.FindGameObjectsWithTag返回一个GameObjects数组。
C#中的数组是一种数据结构,用于存储相同类型的多个对象。
一个列表是对象的泛型集合。
尽管数组和列表在概念上非常相似,但是两者在数据访问和使用方面有所不同。通常,数组在创建时只会填充一次,之后只能读取,而List可以随时更改其元素(有一些注意事项)。
这个StackOverflow问题总结了为什么您可能想要另一个:Array vs List <T>:何时使用哪个?
在您的特定情况下,您想对您的GameObject集合应用一些Linq排序,因此您需要将接收FindGameObjectsWithTag到的数组转换为列表。
您可以通过多种方式来执行此操作。最简单的方法是在列表上使用构造函数重载来一次分配整个数组:
GameObject[] gameObjectArray = GameObject.FindGameObjectsWithTag("Player");
List<GameObject> gameObjectList = new List<GameObject(gameObjectArray);
其他一些选项在这里可用:System.Array到List的转换
TA贡献1936条经验 获得超6个赞
正如史蒂夫(Steve)正确解释的那样,但我想以不同的方式回答:
实际上,在您的代码中,您是将数组类型对象(GameObject.FindGameObjectsWithTag("Player")
)分配给列表类型(List<GameObject> pList
)对象,而编译器并不隐式支持该对象。您必须将列表转换为数组类型:
List<GameObject> pList = new List<GameObject>(GameObject.FindGameObjectsWithTag("Player"));
之后,您将可以使用您的代码。
现在问题的第一部分
我不明白两个列表之间的区别。
实际上,您是在询问不同的黑白数组和列表,并且需要记住的主要区别是,当您具有固定长度的数据时,则应使用数组,如果数据长度可变,则应使用列表。
- 2 回答
- 0 关注
- 195 浏览
添加回答
举报