C# 协程的使用

按帧执行

根据条件按帧执行

IEnumerator InvincibleCor;//协程 
public void HitInvincible()
{        
    //InvincibleCor
    if (InvincibleCor != null)
    {
        StopCoroutine(InvincibleCor);//如果有协程就停掉
    }
    InvincibleCor = InvincibleCoroutine();
    StartCoroutine(InvincibleCor);//开启新的协程
}
//开启协程记录技能时间
IEnumerator InvincibleCoroutine()
{
    m_IsInvincible = true;
    float timer = m_SillTime;
    while (timer > 0)
    {
        if (gm.IsPlay && !gm.IsPause)//如果不是暂停状态
        {
            timer -= Time.deltaTime;
        }
        yield return 0;//每帧执行
    }    
    //协程执行完后,会退出while循环,执行下面的代码
    m_IsInvincible = false;
}

 

你可能感兴趣的:(C#功能)