為什么要給List排序做一個Unity限定條件呢
首先,是C#中的List泛型,若是Java,直接調用Collection.shuffle()就OK了
而Unity的C#版本較低,不能使用Random.Next等函數
同時,List在其內部是有序排列的
所以,在Unity中對List進行隨機排序就需要繞一下了
//想要排序的List a
List<string> a = new List<string>();
//排序之后的List b List<string> b = new List<string>();
//為了降低運算的數量級,當執行完一個元素時,就需要把此元素從原List中移除 int countNum = a.Count;
//使用while循環,保證將a中的全部元素轉移到b中而不產生遺漏 while (b.Count < countNum) {
//隨機將a中序號為index的元素作為b中的第一個元素放入b中 int index = Random.Range(0,a.Count-1);
//檢測是否重復,保險起見 if (!b.Contains(a[index])) {
//若b中還沒有此元素,添加到b中
b.Add(a[index]);
//成功添加后,將此元素從a中移除,避免重復取值
a.Remove(a[index]);
}
}