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。效果非常好。谢谢。