为什么收益率返回新的waitforseconds不起作用?

时间:2015-11-25 08:12:29

标签: c# unity3d unity5

以下是我的代码:

void Start ()
{
    Debug.Log("before");
    StartCoroutine(CharTooLong());
    Debug.Log("after");
}
IEnumerator CharTooLong(){
    Debug.Log ("up");
    yield return new WaitForSeconds(2);
    Debug.Log ("down");
}

我只是使用两种方法来运行,但控制台只是打印如下:

before
up
after

为什么" down"没印?我在我的统一中导入了DoTween,这是效果吗?

如何解决这个问题?

2 个答案:

答案 0 :(得分:3)

如果游戏暂停,则

WaitForSeconds将无效(timescale = 0)重启游戏不会重置时间刻度。您可以在Edit -> Project settings -> Time检查时间刻度参数中检查当前时间刻度。

要么确保您有合适的时间表,要么使用WaitForSeconds

的替代方案
void Start ()
{
    Debug.Log("before");
    StartCoroutine(CharTooLong());
    Debug.Log("after");
}
IEnumerator CharTooLong(){
    Debug.Log ("up");
    yield return new WaitForUnscaledSeconds(2);
    Debug.Log ("down");
}

public static IEnumerator WaitForUnscaledSeconds(float time){
    float ttl = 0;
    while(time > ttl){
        ttl += Time.unscaledDeltaTime;
        yield return null;
    }
}

答案 1 :(得分:0)

您使用了setDT(df, keep.rownames=TRUE)[, list(V1=.N, rn[1L]), .(x,y)] 代码,但您的代码是c#!如果您使用unityScript,则代码必须如下:

UnityScript