隔段时间执行一次,以及协程中的细节

 

延迟几秒后行为...

1使用某个浮点数   TimeDown -= time.delaytime

If(TimeDown <= 0)....

2,使用Invoke(“方法名”,2);//调用一次,只有有VOID和没有参数的方法可以

3,使用协同程序

 

 

        InvokeRepeating("moving", 2f, 1f);//启动2秒后,每1秒执行一次方法moving

 Invoke(“moving”,2f);

Void moving()

//取消

        CancelInvoke();//括号里可以输入想停止的某个方法

携程,协同

 

StartCoroutine(Evade());

 

    IEnumerator Evade ()

    {

        yield return new WaitForSeconds (Random.Range (1, 3));

 

*协程中的细节*
        1.协程与普通方法一样,可以被多次调用, 
        2.协程一旦被开启之后,总是试图将方法中的代码执行完,之后停止。
        3.在协程内,如果遇到yield return null ,0 , 1 ...;表示剩余代码将在下一帧继续执行,
        4.在协程中遇到 yield return new WaitForSeconds (n);代码;表示剩余代码将在 n秒之后执行。 
        5. 在协程中如果遇到 yield return StartCoroutine (Son ()),表示剩余代码将在子协程执行完成之后继续执行。子协程仍然满足协程基本规则。
        6.在协程中如果遇到 yield return new WaitForFixedUpdate (),表示剩余代码将在FixedUpdate执行完毕之后继续向下执行。
        7. 在协程中如果遇到 yield return new WaitForEndOfFrame (),表示剩余代码将在ONGUI执行完毕之后继续向下执行。
        8.在协程中如果遇到 yield return WWW,表示剩余代码将在www 下载文件之后继续向下执行。
        9.在协程中如果遇到  yield return obj ,表示剩余代码将在obj不为空的时候继续向下执行。
       10.在协程中如果遇到  yield return new WaitForSeconds (n) ,会受到Time.timeScale的影响。
       11.协程方法,可以当做普通方法,在两个脚本之间自由调用。 
       12. 生命周期内的方法,也可以改造成协程方法。

posted @ 2017-07-24 21:45  sign尊者  阅读(21)  评论(0编辑  收藏  举报