【Unity】デバッグログ無効化と小ネタ
ログ出力は思っている以上に重い。なのでリリースビルドだったりでは無効化します。恐らくこれが最も有効な手段で、別名のClassを作らずに済む。
【Unity】リリース時にDebug.Logを出力しないようにする – noracle
//#define DISABLE_LOG
using UnityEngine;
#if DISABLE_LOG
public static class Debug
{
//DUMMYは定義しなくて良い。
[System.Diagnostics.Conditional("DUMMY")] public static void Assert(bool condition, string message, Object context) {}
[System.Diagnostics.Conditional("DUMMY")] public static void Assert(bool condition, object message, Object context) {}
[System.Diagnostics.Conditional("DUMMY")] public static void Assert(bool condition, string message) {}
[System.Diagnostics.Conditional("DUMMY")] public static void Assert(bool condition, object message) {}
[System.Diagnostics.Conditional("DUMMY")] public static void Assert(bool condition, Object context) {}
[System.Diagnostics.Conditional("DUMMY")] public static void Assert(bool condition) {}
[System.Diagnostics.Conditional("DUMMY")] public static void AssertFormat(bool condition, string format, params object[] args) {}
[System.Diagnostics.Conditional("DUMMY")] public static void AssertFormat(bool condition, Object context, string format, params object[] args) {}
[System.Diagnostics.Conditional("DUMMY")] public static void Break() {}
[System.Diagnostics.Conditional("DUMMY")] public static void ClearDeveloperConsole() {}
[System.Diagnostics.Conditional("DUMMY")] public static void DebugBreak() {}
[System.Diagnostics.Conditional("DUMMY")] public static void DrawLine(Vector3 start, Vector3 end, Color color, float duration, bool depthTest) {}
[System.Diagnostics.Conditional("DUMMY")] public static void DrawLine(Vector3 start, Vector3 end, Color color, float duration) {}
[System.Diagnostics.Conditional("DUMMY")] public static void DrawLine(Vector3 start, Vector3 end) {}
[System.Diagnostics.Conditional("DUMMY")] public static void DrawLine(Vector3 start, Vector3 end, Color color) {}
[System.Diagnostics.Conditional("DUMMY")] public static void DrawRay(Vector3 start, Vector3 dir, Color color, float duration) {}
[System.Diagnostics.Conditional("DUMMY")] public static void DrawRay(Vector3 start, Vector3 dir, Color color, float duration, bool depthTest) {}
[System.Diagnostics.Conditional("DUMMY")] public static void DrawRay(Vector3 start, Vector3 dir) {}
[System.Diagnostics.Conditional("DUMMY")] public static void DrawRay(Vector3 start, Vector3 dir, Color color) {}
[System.Diagnostics.Conditional("DUMMY")] public static void Log(object message) {}
[System.Diagnostics.Conditional("DUMMY")] public static void Log(object message, Object context) {}
[System.Diagnostics.Conditional("DUMMY")] public static void LogAssertion(object message, Object context) {}
[System.Diagnostics.Conditional("DUMMY")] public static void LogAssertion(object message) {}
[System.Diagnostics.Conditional("DUMMY")] public static void LogAssertionFormat(Object context, string format, params object[] args) {}
[System.Diagnostics.Conditional("DUMMY")] public static void LogAssertionFormat(string format, params object[] args) {}
[System.Diagnostics.Conditional("DUMMY")] public static void LogError(object message, Object context) {}
[System.Diagnostics.Conditional("DUMMY")] public static void LogError(object message) {}
[System.Diagnostics.Conditional("DUMMY")] public static void LogErrorFormat(string format, params object[] args) {}
[System.Diagnostics.Conditional("DUMMY")] public static void LogErrorFormat(Object context, string format, params object[] args) {}
[System.Diagnostics.Conditional("DUMMY")] public static void LogException(System.Exception exception, Object context) {}
[System.Diagnostics.Conditional("DUMMY")] public static void LogException(System.Exception exception) {}
[System.Diagnostics.Conditional("DUMMY")] public static void LogFormat(Object context, string format, params object[] args) {}
[System.Diagnostics.Conditional("DUMMY")] public static void LogFormat(string format, params object[] args) {}
[System.Diagnostics.Conditional("DUMMY")] public static void LogWarning(object message) {}
[System.Diagnostics.Conditional("DUMMY")] public static void LogWarning(object message, Object context) {}
[System.Diagnostics.Conditional("DUMMY")] public static void LogWarningFormat(string format, params object[] args) {}
[System.Diagnostics.Conditional("DUMMY")] public static void LogWarningFormat(Object context, string format, params object[] args) {}
// 拡張
[System.Diagnostics.Conditional("DUMMY")] public static void Log(object _message, string color) {}
}
#else
public static class Debug
{
public static void Assert(bool condition, string message, Object context)
{
if(!condition)
{
UnityEngine.Debug.Assert(condition, message, context);
}
}
public static void Assert(bool condition, object message, Object context)
{
if(!condition)
{
UnityEngine.Debug.Assert(condition, message, context);
}
}
public static void Assert(bool condition, string message)
{
if(!condition)
{
UnityEngine.Debug.Assert(condition, message);
}
}
public static void Assert(bool condition, object message)
{
if(!condition)
{
UnityEngine.Debug.Assert(condition, message);
}
}
public static void Assert(bool condition, Object context)
{
if(!condition)
{
UnityEngine.Debug.Assert(condition);
}
}
public static void Assert(bool condition)
{
if(!condition)
{
UnityEngine.Debug.Assert(condition);
}
}
public static void AssertFormat(bool condition, string format, params object[] args)
{
if(!condition)
{
UnityEngine.Debug.AssertFormat(condition, format, args);
}
}
public static void AssertFormat(bool condition, Object context, string format, params object[] args)
{
if(!condition)
{
UnityEngine.Debug.AssertFormat(condition, context, format, args);
}
}
public static void Break()
{
UnityEngine.Debug.Break();
}
public static void ClearDeveloperConsole()
{
UnityEngine.Debug.ClearDeveloperConsole();
}
public static void DebugBreak()
{
UnityEngine.Debug.DebugBreak();
}
public static void DrawLine(Vector3 start, Vector3 end, Color color, float duration, bool depthTest)
{
UnityEngine.Debug.DrawLine(start, end, color, duration, depthTest);
}
public static void DrawLine(Vector3 start, Vector3 end, Color color, float duration)
{
UnityEngine.Debug.DrawLine(start, end, color, duration);
}
public static void DrawLine(Vector3 start, Vector3 end)
{
UnityEngine.Debug.DrawLine(start, end);
}
public static void DrawLine(Vector3 start, Vector3 end, Color color)
{
UnityEngine.Debug.DrawLine(start, end, color);
}
public static void DrawRay(Vector3 start, Vector3 dir, Color color, float duration)
{
UnityEngine.Debug.DrawRay(start, dir, color, duration);
}
public static void DrawRay(Vector3 start, Vector3 dir, Color color, float duration, bool depthTest)
{
UnityEngine.Debug.DrawRay(start, dir, color, duration, depthTest);
}
public static void DrawRay(Vector3 start, Vector3 dir)
{
UnityEngine.Debug.DrawRay(start, dir);
}
public static void DrawRay(Vector3 start, Vector3 dir, Color color)
{
UnityEngine.Debug.DrawRay(start, dir, color);
}
public static void Log(object message)
{
UnityEngine.Debug.Log(message);
}
public static void Log(object message, Object context)
{
UnityEngine.Debug.Log(message, context);
}
public static void LogAssertion(object message, Object context)
{
UnityEngine.Debug.LogAssertion(message, context);
}
public static void LogAssertion(object message)
{
UnityEngine.Debug.LogAssertion(message);
}
public static void LogAssertionFormat(Object context, string format, params object[] args)
{
UnityEngine.Debug.LogAssertionFormat(context, format, args);
}
public static void LogAssertionFormat(string format, params object[] args)
{
UnityEngine.Debug.LogAssertionFormat(format, args);
}
public static void LogError(object message, Object context)
{
UnityEngine.Debug.LogError(message, context);
}
public static void LogError(object message)
{
UnityEngine.Debug.LogError(message);
}
public static void LogErrorFormat(string format, params object[] args)
{
UnityEngine.Debug.LogErrorFormat(format, args);
}
public static void LogErrorFormat(Object context, string format, params object[] args)
{
UnityEngine.Debug.LogErrorFormat(context, format, args);
}
public static void LogException(System.Exception exception, Object context)
{
UnityEngine.Debug.LogException(exception, context);
}
public static void LogException(System.Exception exception)
{
UnityEngine.Debug.LogException(exception);
}
public static void LogFormat(Object context, string format, params object[] args)
{
UnityEngine.Debug.LogFormat(context, format, args);
}
public static void LogFormat(string format, params object[] args)
{
UnityEngine.Debug.LogFormat(format, args);
}
public static void LogWarning(object message)
{
UnityEngine.Debug.LogWarning(message);
}
public static void LogWarning(object message, Object context)
{
UnityEngine.Debug.LogWarning(message, context);
}
public static void LogWarningFormat(string format, params object[] args)
{
UnityEngine.Debug.LogWarningFormat(format, args);
}
public static void LogWarningFormat(Object context, string format, params object[] args)
{
UnityEngine.Debug.LogWarningFormat(context, format, args);
}
// 拡張
static public void Log(object _message, string color)
{
UnityEngine.Debug.Log("<color=" + color + ">" + _message + "</color>");
}
}
#endif
DISABLE_LOG定義を有効にするとデバッグログが一通り消える。
小ネタ、Assertに事前conditionチェック
public static void Assert(bool condition, string message, Object context)
{
if(!condition)
{
UnityEngine.Debug.Assert(condition, message, context);
}
}
素直に関数を呼ばず、わざわざconditionを見る様にしています。ifの中でブレイクポイントを張っておけば、アサートの条件にヒットした際に簡単にコールスタックが追えます。