纳金网

标题: 根据物体离目标点的距离进行排序 [打印本页]

作者: may    时间: 2015-11-19 06:59
标题: 根据物体离目标点的距离进行排序
实现这种功能有很多种,下面是我个人认为比较好的实现方法
  1. using UnityEngine;
  2. using System.Collections;
  3. using System.Collections.Generic;


  4. public class Sort : MonoBehaviour {

  5.     public List<Transform> list;
  6.         // Use this for initialization
  7.         void Start () {
  8.         list = new List<Transform>();

  9.         AddAllCubes();
  10.        
  11.         }
  12.        
  13.         // Update is called once per frame
  14.         void Update () {
  15.        
  16.         }
  17.     void OnGUI()
  18.     {
  19.         DisplaySortOnGUI();
  20.         if (GUILayout.Button("SortObjsByDistance"))
  21.         {
  22.             SortObjsByDistance();
  23.         }
  24.     }

  25.     void AddAllCubes()
  26.     {
  27.         GameObject[] go = GameObject.FindGameObjectsWithTag("cube");
  28.         foreach(GameObject cube in go)
  29.         {
  30.             list.Add(cube.transform);
  31.         }
  32.     }
  33.     void SortObjsByDistance()
  34.     {
  35.         list.Sort(delegate(Transform t1,Transform t2)
  36.         {
  37.             Debug.Log(Vector3.Distance(t1.position, transform.position).CompareTo(Vector3.Distance(t2.position, transform.position)));
  38.             return Vector3.Distance(t1.position, transform.position).CompareTo(Vector3.Distance(t2.position, transform.position));
  39.         });
  40.     }

  41.     void DisplaySortOnGUI()
  42.     {
  43.         foreach (Transform t in list)
  44.         {
  45.             GUILayout.Label(t.name);
  46.         }
  47.     }

  48. }
复制代码





欢迎光临 纳金网 (http://go.narkii.com/club/) Powered by Discuz! X2.5