Unity中List的隨機排序(亂序)


 

為什么要給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]);
     }
}


免責聲明!

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



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