在JavaScript中,您可以覆盖某个功能,例如console.log()
喜欢这样:
console.log("test1");
console.log = function() { return; };
console.log("test2");
我经常使用它来隐藏所有调试控制台消息。
我试图在Unitys Debug.Log()
中使用C#来实现这个:
Debug.Log = () => { return; };
但我得到Cannot assign to Log, because it is a message group
和The left-hand side of an assignment must be a variable, a property or an indexer
。
是否有可能以某种方式覆盖它? 我只是很好奇。
答案 0 :(得分:3)
您可以简单地以合理的方式禁用记录器
Debug.unityLogger.logEnabled = false;
答案 1 :(得分:0)
您可以自定义默认记录器处理程序
using System;
using UnityEngine;
public class LogHandler : ILogHandler
{
public bool enable;
private static ILogHandler unityLogHandler = Debug.unityLogger.logHandler;
public LogHandler(bool enable = true)
{
this.enable = enable;
}
public void LogException(Exception exception, UnityEngine.Object context)
{
if(enable)
{
unityLogHandler.LogException(exception, context);
}
}
public void LogFormat(LogType logType, UnityEngine.Object context, string format, params object[] args)
{
#if UNITY_EDITOR || DEVELOPMENT_BUILD
if(enable)
{
unityLogHandler.LogFormat(logType, context, format, args);
}
#endif
}
}
使用:
Debug.unityLogger.logHandler = new LogHandler(true);