清除编辑器控制台记录脚本

时间:2016-11-13 18:40:03

标签: c# unity3d

这是我的脚本,我试图制作“”,以防它不是其中一种情况:

using UnityEngine;
using System.Collections;

public class DetectPlayer : MonoBehaviour {

    void OnCollisionEnter(Collision collision)
    {
        if (collision.gameObject.name == "Platform")
        {
            Debug.Log("Touching Platform");
        }
        else
        {
            Debug.Log("");
        }
    }

    void OnTriggerEnter(Collider other)
    {
        if (other.gameObject.name == "OnTop Detector")
        {
            Debug.Log("On Top of Platform");
            GameObject findGo = GameObject.Find("ThirdPersonController");
            GameObject findGo1 = GameObject.Find("Elevator");
            findGo.transform.parent = findGo1.transform;
        }
        else
        {
            Debug.Log("");
        }
    }
}

但这“”不起作用。在游戏运行时,它不会从控制台中删除文本。而且当我停止游戏并再次运行它时,它会继续显示Debug.Log的最后一个文本。

如果在我的剧本中没有发生If,我想清除它。

我看到了这个答案:

Answer

但我不确定这是否是我需要的以及如何使用它。制作一个新剧本?

还有错误呢。如果我清除登录控制台,它会删除erorrs,如果有一些?

在这个屏幕截图中,我触摸平台然后离开它后处于状态,但文本仍然存在于控制台日志中:

Screenshot

2 个答案:

答案 0 :(得分:9)

当您从项目中启用 Debug Build 时构建的应用程序中清除日志时,将使用Debug.ClearDeveloperConsole()函数。有没有官方API用于清除编辑器日志。

大多数编辑器功能可以与Reflection一起复制,就像hiding Gizmos一样,并切换Stats Panel。我打算写一个,但发现this一个。

这应该清除Console选项卡上的每个日志。

using System.Reflection;

public void ClearLog()
{
    var assembly = Assembly.GetAssembly(typeof(UnityEditor.ActiveEditorTracker));
    var type = assembly.GetType("UnityEditorInternal.LogEntries");
    var method = type.GetMethod("Clear");
    method.Invoke(new object(), null);
}

现在,您可以在其他声明中致电ClearLog();

修改

最近在~Union 2017中已经发生了变化。由于它是通过反射完成的,我认为如果Unity重命名此代码中使用的任何类,变量或函数,它会随时再次更改。以下是执行此操作的新方法:

public void ClearLog()
{
    var assembly = Assembly.GetAssembly(typeof(UnityEditor.Editor));
    var type = assembly.GetType("UnityEditor.LogEntries");
    var method = type.GetMethod("Clear");
    method.Invoke(new object(), null);
}

答案 1 :(得分:-2)

请注意,调试日志不只是一行(您可以通过单击所述行来查看) 您可以尝试使用Debug.ClearDeveloperConsole()并查看所获得的内容。