unity對list中的gameObject排序 (轉)


這篇主要說的是unity對list中的gameObject排序問題,現在我們具體來看。
首先定義一個List類,這個類里面包含了Name和Total兩個屬性變量,下面就是針對這兩個變量進行排序。

  1. public class Player
  2. {
  3. public string Name { get; set; }
  4. public int Total { get; set; }
  5. public Player(string name, int total)
  6. {
  7. Name = name;
  8. Total = total;
  9. }
  10. }

然后我們創建一個List,這個List是Player對象的一個List集,創建好List后,需要為List添加一些節點,下面添加了6條數據。

  1. List<Player> lst = new List<player>();
  2. lst.Add(new Player("John", 100));
  3. lst.Add(new Player("Smith", 120));
  4. lst.Add(new Player("Cait", 97));
  5. lst.Add(new Player("Irene", 100));
  6. lst.Add(new Player("Ben", 100));
  7. lst.Add(new Player("Deniel", 88));

我們通過List.Sort() 方法來進行排序

1:通過Total變量來進行升序排序

  1. lst.Sort(delegate(Player x, Player y)
  2. {
  3. return x.Total.CompareTo(y.Total);
  4. });

2:通過Total進行降序排序

  1. lst.Sort(delegate(Player x, Player y)
  2. {
  3. return y.Total.CompareTo(x.Total);
  4. });

3:通過多個元素進行排序

  1. lst.Sort(delegate(Player x, Player y)
  2. {
  3. // Sort by total in descending order
  4. int a = y.Total.CompareTo(x.Total);
  5. // Both player has the same total.
  6. // Sort by name in ascending order
  7. if (a == 0)
  8. a = x.Name.CompareTo(y.Name);
  9. return a;
  10. });

4:通過Linq進行排序

    1. var result1 = lst.OrderBy(a => a.Total);
    2. var result3 = lst.OrderBy(a => a.Total).ThenBy(a => a.Name);
    3. var result2 = lst.OrderByDescending(a => a.Total).ThenByDescending(a => a.Name);


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM