将GameObjects从数组排序到空间中的参考点

时间:2013-03-01 01:25:08

标签: sorting unity3d

我在一个数组中有一些GameObject,我想根据空间中的一个点按距离对它们进行排序。所以基本上我正在寻找一种按距离算法排序的点。

我确定这是基本的排序算法,但到目前为止我在Google上找不到有效的答案。

感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

这应该让你开始:

System.Array.Sort<GameObject>(arrayOfGameObjects,
(g1, g2) => 
    (Vector3.Distance(target,g1.transform.position) < 
     Vector3.Distance(target,g2.transform.position))?-1:1);

答案 1 :(得分:1)

Jerdak回答是对的。 如果您可以使用数组的有序副本,而不是对原始数据进行排序,则可以使用Linq OrderBy扩展方法Enumerable

Vector3 targetPos;
IEnumerable<Pet> ordered = arrayOfGameObjects.OrderBy(
    obj => Vector3.Distance(obj.transform.position,targetPos));