Unity生成随机数用的是System.Random库
以下展示如何在游戏运行时看见生成随机数的效果(首先要创建一个文本组件,我这里用的是TMPro文本)
代码示例:
using UnityEngine;
using TMPro;
using System.Collections;
public class RandomTest : MonoBehaviour
{
public TextMeshProUGUI textMeshPro;
[Header("等待时间")]
public float WaitSecond;
private int randNum;
private bool isCoroutineExecuting = false;
public int RandNum
{
private set
{
randNum = value;
textMeshPro.text = randNum.ToString();
}
get
{
return randNum;
}
}
private System.Random rd = new System.Random();
private void Update()
{
if (!isCoroutineExecuting)
{
if (Input.GetKey(KeyCode.R))
{
GetRand();
StartCoroutine(ExecuteAfterTime(WaitSecond));
}
}
}
void GetRand()
{
RandNum = rd.Next(0, 100);
}
IEnumerator ExecuteAfterTime(float time)
{
isCoroutineExecuting = true;
yield return new WaitForSeconds(time);
isCoroutineExecuting = false;
}
}
代码解析:
最关键的两行代码是
private System.Random rd = new System.Random();
RandNum = rd.Next(0, 100);
要先创建一个Random变量,然后用Next函数在指定范围内生成(例如这里是0到99)
其中引入协程是为了限制按下R键速度,如果不用协程等待,那么按下键盘按键,就会多次生成,如果不想多次生成也不想引入协程,可以对代码作如下修改:
if (Input.GetKey(KeyCode.R))
改成
if (Input.GetKeyDown(KeyCode.R))
注意这里对文本的修改是在set运行时,避免在update运行减少开销