随机生成器的制作至少应具备四个个要素:需要随机生成的物体、物体随机生成的间隔时间、每生成一次的物体个数、一定时间后销毁物体。
其中最关键的问题是如何间隔一定时间生成,这里提供两种思路:1.运用协程。2.做个计时器。
1.通过协程制作随机生成器。
在这里我们需要初步了解一下协程。
首先,我们常用的函数方法是没有状态的,等到它return后,它里面包含的所有局部变量就消失了,但是在协程中我们可以在一个函数中多次返回,局部变量被当做状态储存在协程函数中,直到最后一次reurn,协程的状态才被清除,即拥有随意暂停功能。
通俗来讲,协程的主要功能就是:你写一段顺序的代码,随后标明哪里需要暂停,它在下一帧或是一段时间后,系统会继续执行这段代码。
实现这个功能需要yield语句,即使用yield语句时,协程会暂停执行,并在下一帧自动恢复。
其中yield return new WaitForSeconds(x);意味着等待x秒,一段指定的时间延迟之后继续执行。
还需要StartCoroutine()方法启动协程。StartCoroutine()方法在第一个yield返回时返回,不过可以生成结果,直到协程结束。
同时,协程的方法必须写在IEnumerator中。
而既然协程可以随意暂停,我们随机生成功能倒可以给它制造一个while死循环。具体代码如下:
public class randomizer : MonoBehaviour {
public GameObject ball;
public float TimeJG;
public int buildNumbers;
void Start()
{
StartCoroutine(enumerator());
}
IEnumerator enumerator()
{
while (true)
{
for (int i = 0; i < buildNumbers; i++)
{
GameObject newball = Instantiate(ball);
float X = Random.Range(1, 5);
float Y = Random.Range(1, 5);
float Z = Random.Range(1, 5);
newball.transform. position = new Vector3(X, Y, Z);
Destroy(newball, 8);
}
yield return new WaitForSeconds(TimeJG);
}
}
}
具体操作:层级窗口中创建一个空物体,可命名为randomizer,把脚本绑定给它,因为我们创建了一个GameObject类的游戏对象,所以外界需要先把层级窗口中需要随机生成的物体拖入project窗口中创建好预制体,再将预制体拖入代码中命名的ball里;同时在TimeJG中输入需要的时间间隔,在buildNumbers中输入每次生成需要的个数。然后在游戏中获取到随机生成的坐标范围,打开代码调整,分别将X、Y、Z轴的范围数值在脚本中对应修改,另外定时销毁游戏物体时间也可自行修改。
2.通过制作计时器来实现定时随机生成功能。
在FixedUpdate()方法中默认固定0.02s调用一次,假设我们声明时间间隔float TimeJG = 2秒,通过
TimeJG = TimeJG -Time.deltaTime;语句来简易的实现倒计时,当时间减到小于0时,执行我们需要的代码,但在判断中需要重新给TimeJG赋值间隔时间,否则生成一次就跳出判断停止了。具体代码如下:文章来源:https://www.toymoban.com/news/detail-406092.html
public class timeLIMIT1 : MonoBehaviour {
public GameObject ball;
float TimeJG = 2;
void FixedUpdate()
{
TimeJG = TimeJG - Time.deltaTime;
if (TimeJG < 0)
{
GameObject newball = Instantiate(ball);
TimeJG = Random.Range(1.5f, 2.0f);
float X = Random.Range(1, 5);
float Y = Random.Range(1, 5);
float Z = Random.Range(1, 5);
newball.transform.position = new Vector3(X, Y, Z);
Destroy(newball, 8);
}
}
}
其具体操作和第一种方法类似,将预制体拖入GameObject类的ball中,再打开代码设置那三个参数:间隔时间,随机生成坐标,定时摧毁时间。文章来源地址https://www.toymoban.com/news/detail-406092.html
到了这里,关于unity如何制作随机生成器的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!