Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sorting 将游戏对象从阵列排序到空间中的参考点_Sorting_Unity3d - Fatal编程技术网

Sorting 将游戏对象从阵列排序到空间中的参考点

Sorting 将游戏对象从阵列排序到空间中的参考点,sorting,unity3d,Sorting,Unity3d,我在一个数组中有一些游戏对象,我想根据空间中的一个点按距离对它们进行排序。基本上我是在用距离算法进行点排序 我确信这是基本的排序算法,但我至今在谷歌上找不到一个有效的答案 谢谢你的帮助 这应该让您开始: System.Array.Sort<GameObject>(arrayOfGameObjects, (g1, g2) => (Vector3.Distance(target,g1.transform.position) < Vector3.Dista

我在一个数组中有一些游戏对象,我想根据空间中的一个点按距离对它们进行排序。基本上我是在用距离算法进行点排序

我确信这是基本的排序算法,但我至今在谷歌上找不到一个有效的答案


谢谢你的帮助

这应该让您开始:

System.Array.Sort<GameObject>(arrayOfGameObjects,
(g1, g2) => 
    (Vector3.Distance(target,g1.transform.position) < 
     Vector3.Distance(target,g2.transform.position))?-1:1);
System.Array.Sort(arrayOfGameObjects,
(g1,g2)=>
(矢量3.距离(目标,g1.变换.位置)<
向量3.距离(目标,g2.变换.位置))?-1:1);
杰达克的答案是正确的。 如果可以使用数组的有序副本,而不是对原始副本进行排序,则另一种方法是使用
Linq
扩展方法来
可枚举

Vector3 targetPos;
IEnumerable<Pet> ordered = arrayOfGameObjects.OrderBy(
    obj => Vector3.Distance(obj.transform.position,targetPos));
Vector3 targetPos;
IEnumerable ordered=arrayOfGameObjects.OrderBy(
obj=>Vector3.距离(obj.变换.位置,targetPos));

也许这个问题更合适,因为它需要一些Unity3D的基本知识(至少,如何使用
Vector3
类)+1:答案是正确的。我还建议使用Linq替代方案。为了代码的可读性和紧凑性,我通常更喜欢使用Linq。效果非常好。谢谢。