首页 > 解决方案 > 如何在一定时间后停止产生攻击者?

问题描述

如何在一定时间后停止生成敌人?基本思想是我的敌人会随机生成,我需要一些方法来阻止它们在特定时间后生成。

下面是我的代码:

[SerializeField] float minSpawnDelay = 1f;
[SerializeField] float maxSpawnDelay = 5f;
[SerializeField] Attacker[] attackerPrefabArray;
[SerializeField] float spawnerDelay = 1f;



bool spawn = true;

IEnumerator Start()
{
    yield return new WaitForSeconds(spawnerDelay);

    while (spawn)
    {
        yield return new WaitForSeconds(Random.Range(minSpawnDelay, maxSpawnDelay));
        SpawnAttacker();                
    }

}


public void StopSpawning()
{
   spawn = false;
}

private void SpawnAttacker()
{
    var attackerIndex = Random.Range(0, attackerPrefabArray.Length);
    Spawn(attackerPrefabArray[attackerIndex]);
}

private void Spawn(Attacker myAttacker)
{
    Attacker newAttacker = Instantiate
        (myAttacker, transform.position, transform.rotation)
        as Attacker;
    newAttacker.transform.parent = transform;
}

标签: c#

解决方案


解决方案

IEnumerator 始终用于此目的。在特定时间跨度之后触发事件时使用 WaitForSeconds(timespan) 。只需使用下面的代码并在“yield return new WaitForSeconds(5);”之后编写您的desried函数;它会触发或运行你想要的功能。

IEnumerator Example()
    {
        print(Time.time);
        yield return new WaitForSeconds(5);
         StopSpawning(enter code here); //your function 
        print(Time.time);
    }

推荐阅读