Debug.Log何时写入控制台

时间:2017-12-20 18:46:58

标签: c# unity3d

我正在尝试对我的算法进行基准测试。有时它需要超长的时间,我想知道它到达了哪里。但是对于某些原因,Debug.log在更新方法结束之前不会打印任何内容。

我希望看到它逐步打印文本,而是在更新周期结束时立即获取所有内容。 Makediagram方法很慢。根据输入可能需要7-700秒。

private void Update()
{
if (i > 0) return;
int count = 16 * (int)Mathf.Pow(2, i);

    Debug.Log("New diagram");
        BowyerWatson bw = new BowyerWatson(BowyerWatson.STATE.STATE_3D, count, 0);
    Debug.Log("Points generated");
        float ctime = Time.realtimeSinceStartup;
        bw.MakeDiagram();
        time += Time.realtimeSinceStartup - ctime;
    Debug.Log("i:" + i + " j:" + j + " time:" + (Time.realtimeSinceStartup-ctime));


    j++;
    if(j == 20)
    {
        i++;
        j = 0;
        Debug.Log(count + " points took: " + time / 20 + "s on average");
        time = 0;
    }

}

1 个答案:

答案 0 :(得分:0)

Debug.Log立即写入。问题是Update不会产生并等待一个任务结束。你真正想要的是一个在MakeDiagram()运行时产生的协程。

或者在MakeDiagram()运行时将布尔值标记为true,然后在Update()函数中,如果布尔值为true,则为return,然后在MakeDiagram()完成后将bool标记为false ,继续执行代码。