在Unity中实例化
问题描述:
基本上我做了一个非常简单的游戏,其中有块掉落,我拥有基本的C#知识,但是我无法真正了解自己如何去做这件事。基本上我要在中间,左边和右边下降3个街区,你必须避免。我已经制作了一个实例化脚本,随机在1到4秒内在每个产卵位置产生它们,但有时它会意外产生3个!我只需要检查一下,看看是否已经在左边和右边产生了2个,然后在中间不产生一个,反之亦然。你们能帮我吗?谢谢!顺便说一句,这是我目前的spawn脚本。在Unity中实例化
public GameObject spawn;
private float spawnTime;
void Start()
{
spawnTime = Random.Range(1, 5);
Invoke("Spawn", spawnTime);
}
void Spawn()
{
spawnTime = Random.Range(1, 5);
Instantiate(spawn, transform.position, Quaternion.identity);
Invoke("Spawn", spawnTime);
}
编辑:
using UnityEngine;
公共类randomSpawner:MonoBehaviour {
public GameObject spawn;
private float spawnTime = 1;
void Start()
{
if (GameObject.FindGameObjectsWithTag("Cube").Length < 2)
{
spawnTime = Random.Range(1, 3);
Invoke("Spawn", spawnTime);
}
}
void Spawn()
{
if (GameObject.FindGameObjectsWithTag("Cube").Length < 2)
{
spawnTime = Random.Range(1, 3);
Instantiate(spawn, transform.position, Quaternion.identity);
Invoke("Spawn", spawnTime);
}
}
}
答
你可以在你的模块添加一个标签,让我们说Block
然后实例之前一个你做GameObject.FindGameObjectsWithTag("Block");
这将返回一个然后你只需要验证该数组的长度。
void Spawn()
{
if(GameObject.FindGameObjectsWithTag("Block").Length < 2){
Instantiate(spawn, transform.position, Quaternion.identity);
}
spawnTime = Random.Range(1, 5);
Invoke("Spawn", spawnTime);
}
你也可以有一个static
变量,你产卵块和递减时,当你摧毁一个递增。
此脚本是否附加到正在生成的块? – CNuts
@CN这不是,但现在我已经将它应用到每个正在产卵的立方体上,它们会在它们落下的时候将它们重叠在一起。 – enyap
我要给正在衍生出来的立方体增加一个驱逐舰脚本,如果有超过2个的话可以摧毁它们,也许这样可以修复它,我会回发。 – enyap