我所拥有的是4个平台,我在4个位置实例化。我想要的是每次都要对平台进行洗牌。到目前为止我的代码:
using UnityEngine;
public class PlatformCreator : MonoBehaviour {
public GameObject[] platforms;
public Transform[] points;
private void Start()
{
for (int i = 0; i < points.Length; i++)
{
Instantiate(platforms[i], points[i].position, Quaternion.identity);
}
}
}
例如,平台现在总是以相同的顺序生成 - 粉红色,黄色,蓝色,紫色
我希望它们每次都以不同的顺序产生,例如 - 黄色,蓝色,紫色,粉红色。我尝试用random.range创建一个int索引,但是我搞砸了什么
答案 0 :(得分:4)
您可以将点数添加到列表而不是数组,这将有助于您“洗牌”#34;价值。从This SO帖子中获取随机播放功能,您可以执行以下操作:
public class PlatformCreator : MonoBehaviour {
public GameObject[] platforms;
public List<Transform> points;
private Random rng;
public 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;
}
}
private void Start()
{
rng = new Random();
points.Shuffle();
for (int i = 0; i < points.Count; i++)
{
Instantiate(platforms[i], points[i].position, Quaternion.identity);
}
}
}