我有一个精灵列表和字符串列表。我想对它们进行随机播放。随机播放的效果不同,但对精灵和字符串都是如此。随机播放的顺序可以相同吗?
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class ShuffleList : MonoBehaviour
{
public List<Sprite> iconSprite = new List<Sprite>();
public List<string> priceText = new List<string>();
// Start is called before the first frame update
void Start()
{
iconSprite.Shuffle();
priceText.Shuffle();
}
}
public static class IListExtensions {
/// <summary>
/// Shuffles the element order of the specified list.
/// </summary>
public static void Shuffle<T>(this IList<T> ts) {
var count = ts.Count;
var last = count - 1;
for (var i = 0; i < last; ++i) {
var r = UnityEngine.Random.Range(i, count);
var tmp = ts[i];
ts[i] = ts[r];
ts[r] = tmp;
}
}
}
1条答案
按热度按时间k4emjkb11#
你需要一次对两个列表进行洗牌,所以不要使用只有一个参数的extension-method,而应该使用一个有两个列表作为参数的普通方法。
或者,您也可以为random-generator使用相同的种子,这将导致生成相同的序列:
现在,您可以为函数的两个调用提供相同的种子,例如: