這篇主要說的是unity對list中的gameObject排序問題,現在我們具體來看。
首先定義一個List類,這個類里面包含了Name和Total兩個屬性變量,下面就是針對這兩個變量進行排序。
- public class Player
- {
- public string Name { get; set; }
- public int Total { get; set; }
- public Player(string name, int total)
- {
- Name = name;
- Total = total;
- }
- }
然后我們創建一個List,這個List是Player對象的一個List集,創建好List后,需要為List添加一些節點,下面添加了6條數據。
- List<Player> lst = new List<player>();
- lst.Add(new Player("John", 100));
- lst.Add(new Player("Smith", 120));
- lst.Add(new Player("Cait", 97));
- lst.Add(new Player("Irene", 100));
- lst.Add(new Player("Ben", 100));
- lst.Add(new Player("Deniel", 88));
我們通過List.Sort() 方法來進行排序
1:通過Total變量來進行升序排序
- lst.Sort(delegate(Player x, Player y)
- {
- return x.Total.CompareTo(y.Total);
- });
2:通過Total進行降序排序
- lst.Sort(delegate(Player x, Player y)
- {
- return y.Total.CompareTo(x.Total);
- });
3:通過多個元素進行排序
- lst.Sort(delegate(Player x, Player y)
- {
- // Sort by total in descending order
- int a = y.Total.CompareTo(x.Total);
- // Both player has the same total.
- // Sort by name in ascending order
- if (a == 0)
- a = x.Name.CompareTo(y.Name);
- return a;
- });
4:通過Linq進行排序
- var result1 = lst.OrderBy(a => a.Total);
- var result3 = lst.OrderBy(a => a.Total).ThenBy(a => a.Name);
- var result2 = lst.OrderByDescending(a => a.Total).ThenByDescending(a => a.Name);