gpt4 book ai didi

c# - 从脚本中清除编辑器控制台日志

转载 作者:太空狗 更新时间:2023-10-30 00:38:29 25 4
gpt4 key购买 nike

这是我的脚本,我尝试制作 ""以防万一:

private void OnCollisionEnter(Collision collision)
{
if (collision.gameObject.name == "Platform")
Debug.Log("Touching Platform");
else Debug.Log("");
}
private 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

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

还有错误呢。如果我清除控制台中的日志,如果有一些错误,它也会删除错误?

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

Screenshot

最佳答案

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

大多数编辑器功能都可以用 Reflection 复制就像hiding Gizmos并切换 Stats Panel .我本来打算写一个但发现 this一个。

这应该会清除“控制台”选项卡上的所有日志。

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);
}

现在,您可以在 else 语句中调用 ClearLog();

编辑:

这在 ~Unity 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);
}

关于c# - 从脚本中清除编辑器控制台日志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40577412/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com