Unity_塔防游戏按波产生怪(协程实现)_064

在前面的案例中里面充斥者两个计时器,维护起代码来说相对比较复杂,接下来我们使用协程来实现产生怪的逻辑

using UnityEngine;
using System.Collections;

public class CreateEnemeies : MonoBehaviour {

    //产生多少波怪
    public int count;
    //每波怪产生后间隔的事件
    public float span;
    //产生敌人的速率
    public float rate;
    //敌人的预制体
    public GameObject enemeyPrefab;
    //每波产生怪的数量
    public int number;
    // Use this for initialization
    void Start () {
        StartCoroutine(GetWaveOfEnemy(count,span));
    }


    /// 
    /// 控制怪物产生多少波  产生怪后停止多久
    /// 
    /// 产生怪的波数
    /// 在上一波怪产生结束后后停止多久
    /// 
    IEnumerator GetWaveOfEnemy(int wave,float span)
    {
        while (wave > 0)
        {
            yield return StartCoroutine(CreateEnemies(rate));
            Debug.Log("第"+wave +"波怪产生结束");
            wave--;

            yield return new WaitForSeconds(span);
        }
    }
    /// 
    /// 产生怪
    /// 
    /// 两个怪之间产生的时间间隔
    /// 
    IEnumerator CreateEnemies(float duration)
    {

        int count = 0;
        while (true)
        {
            if (countyield return new WaitForSeconds(duration);
                Instantiate(enemeyPrefab, Vector3.zero, Quaternion.identity);
                count++;
            }
            else
            {
                break;
            }
        }
    }
}

实现效果:
Unity_塔防游戏按波产生怪(协程实现)_064_第1张图片

你可能感兴趣的:(Unity)