Unity3d unity 3d如何计算末端和每个玩家之间的直线距离,然后按距离排序,

Unity3d unity 3d如何计算末端和每个玩家之间的直线距离,然后按距离排序,,unity3d,Unity3d,unity 3d如何计算末端和每个玩家之间的直线距离,然后按距离排序 我的代码 float closest = 1000; //add your max range here GameObject closestObject = null; for (int i = 0; i < MyListOfObjects.Length; i++) //list of gameObjects to search through { float dist

unity 3d如何计算末端和每个玩家之间的直线距离,然后按距离排序

我的代码

    float closest = 1000; //add your max range here
    GameObject closestObject = null;
    for (int i = 0; i < MyListOfObjects.Length; i++)  //list of gameObjects to search through
    {
        float dist = Vector3.Distance(MyListOfObjects[i].transform.position, winpont.transform.position);

        if (dist < closest)
        {
            closest = dist;
            closestObject = MyListOfObjects[i];
            closestObjects[i] = MyListOfObjects[i];
            //if (closestObject.gameObject.tag == "Player")
            //{
            //    print(MyListOfObjects[i]);
            //}
            print(MyListOfObjects[i].name);
        }

    }
float-closest=1000//在此处添加您的最大范围
GameObject ClosesObject=null;
for(int i=0;i
您可以使用LINQ按距离对集合进行排序

例如:

var objects = new List<GameObject>(); // Collection of objects
var player = new GameObject();

// Sort object, It will return in typeof IEnumerable<T> 
var sortedCollection = objects.OrderBy(obj => Vector3.Distance(player.transform.position, obj.transform.position));

// Convert your IEnumerable<T> to array or List as you wish
var sortedArray = sortedCollection.ToArray();
var objects=new List();//对象集合
var player=新游戏对象();
//排序对象,它将以IEnumerable的类型返回
var sortedCollection=objects.OrderBy(obj=>Vector3.Distance(player.transform.position,obj.transform.position));
//根据需要将IEnumerable转换为数组或列表
var sortedArray=sortedCollection.ToArray();

您可以为此使用
SortedDictionary
SortedList
。这样做的目的是在对对象进行编目后进行排序,这些类型将为您完成排序。