【发布时间】:2019-12-09 19:01:30
【问题描述】:
我正在尝试连续实例化一个对象。为此,我需要有某种间隔或等待计时器,这样它就不会一次实例化所有内容。我想出了这个:
public class EnemySpawner : MonoBehaviour
{
public GameObject Enemy;
public void Update()
{
var random = new Random();
var randomX = random.Next(-12, 12);
var randomY = random.Next(-5, 5);
StartCoroutine(Spawn(randomX, randomY));
}
public IEnumerator Spawn(int randomX, int randomY)
{
yield return new WaitForSeconds(3);
Instantiate(Enemy, new Vector3(randomX, randomY), Quaternion.identity);
}
}
最终发生的是它将等待 3 秒(按照编码),然后一次实例化尽可能多的对象。我希望的结果是它会生成一个,等待三秒钟,再生成一个等等......任何信息将不胜感激!
【问题讨论】:
-
更新每帧运行一次。如果您之前帧的更新仍在运行,那没关系。无论如何它都会运行它。不要在你的更新中这样做。这样做的每一帧你都在启动一个新的协程。如果您每秒获得 100 帧,则您每秒启动 100 个协程。您需要对其设置一些条件以阻止这种情况发生。