我在一个数组中有一些 GameObject,我想根据空间中的一个点按距离对它们进行排序。所以基本上我正在寻找一个按距离算法排序的点。
我确定这是基本的排序算法,但到目前为止我在 Google 上找不到有效的答案。
谢谢您的帮助 !
这应该让你开始:
System.Array.Sort<GameObject>(arrayOfGameObjects,
(g1, g2) =>
(Vector3.Distance(target,g1.transform.position) <
Vector3.Distance(target,g2.transform.position))?-1:1);
杰达克的回答是对的。如果您可以使用数组的有序副本,而不是对原始副本进行排序,则另一种方法是使用Linq
OrderBy扩展方法Enumerable
:
Vector3 targetPos;
IEnumerable<Pet> ordered = arrayOfGameObjects.OrderBy(
obj => Vector3.Distance(obj.transform.position,targetPos));