Unity随机从数组中抽取几个元素使用的基本方法
前言
在今天项目中想开发这样一种功能,在物体数组中随机选择几个物体,使他们随机显示出来。下面是实现这种功能的基本步骤:
步骤
1.添加基本脚本,脚本代码如下所示:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class TextBackImageManager : MonoBehaviour
{
//内存展示物体
public GameObject[] textBackImage;
int[] testArray;
// Use this for initialization
void Start ()
{
ToShowMerroy();
}
/// <summary>
/// 展示内存
/// </summary>
internal void ToShowMerroy()
{
testArray = GetRandomSequence(textBackImage.Length,6);
for (int i = 0;i < 6;i++)
{
textBackImage[testArray[i]].SetActive(true);
}
}
/// <summary>
/// 随机抽取随机数
/// </summary>
/// <param name="total"></param>
/// <param name="count"></param>
/// <returns></returns>
int[] GetRandomSequence(int total,int count)
{
int[] sequence = new int[total];
int[] output = new int[count];
for (int i = 0;i <total;i++)
{
sequence[i] = i;
}
int end = total - 1;
for (int i = 0; i < count;i++)
{
//随机一个数,每随机一次,随机区间-1
int num = Random.Range(0,end + 1);
output[i] = sequence[num];
//将区间最后一个数赋值到取到的数上
sequence[num] = sequence[end];
end--;
}
return output;
}
}
2.将脚本挂载到场景的物体上,将需要随机产生的物体拖拽到脚本上,如下图所示:
3.运行工程,物体随机显示了出来,且不重复,如下图所示:
4.再次运行,物体也随机显示出来了,和上次运行的效果也不一样。