我的列表中有4种颜色,我想在不同的位置随机显示每种颜色。但是当我尝试这样做的时候,不同的颜色出现在我不想要的同一时间。我想要显示所有卡片,并且每个卡片都在不同的位置。
以下是代码。
hasChild
答案 0 :(得分:0)
您需要的是随机播放列表,然后按顺序使用随机数据。你需要对列表进行排列,然后进行改组。
在网络上或Stack Overflow上查找改组代码。
答案 1 :(得分:0)
尝试将第二个列表作为临时值并从列表中弹出每个使用过的元素。
var colorList = List<Color>(); // color list
var tempList = colorList; // temp list so you don't lose your colors
//make random number between 0 & n
var n = 10;
while( n > 0) {
var randomNumber = Random.Range(0, n);
tempList.popAt(randomNumber);
n--;
}
或者在其他评论中提到,shuffle方法是
private static Random rng = new Random();
public static void Shuffle<T>(this IList<T> list)
{
int n = list.Count;
while (n > 1) {
n--;
int k = rng.Next(n + 1);
T value = list[k];
list[k] = list[n];
list[n] = value;
}
}
取自here