塔防游戏敌人波数控制

在塔防游中,会需要我们实现敌人的一波一波产生,实现的方法可以是通过Time来实现但是比较繁琐,今天给大家介绍通过协程实现控制敌人产生的波数。我们来看一下代码:
   //产生多少波怪
    public int count;
    //每波怪产生后间隔的时间
    public float span;
    //产生敌人的速率
    public float rate;
    //敌人的预制体
    public  GameObject enemeyPrefabs;
    //每波产生怪的数量
    public int number;
 
 // Use this for initialization
 void Start () {

        StartCoroutine(GetWaveEnemy(count,span));
 }
 
 // Update is called once per frame
 void Update () {
 
 }
//控制波数
    IEnumerator GetWaveEnemy(int wave,float span)
    {
        while (wave>0)
        {
            yield return StartCoroutine(CreateEnemies(rate));
            wave--;
            Debug.Log("第"+wave+"波产生结束");
            yield return new WaitForSeconds(span);
        }
    }
//控制一波产生的数量
    IEnumerator CreateEnemies(float rate)
    {
        int count = 0;
        while (true)
        {
            if (count<number)
            {
                yield return new WaitForSeconds(rate);
                Instantiate(enemeyPrefabs,new Vector3(20,-7,-31),Quaternion.identity);
                count++;
            }
            else
            {
                break;
            }
        }
    }
写好脚本将他绑定在一个空物体上,实现效果如下(该图是我塔防游戏的一个效果,GIF传不上...)

塔防游戏敌人波数控制