2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

ログ出力をビルドに含めないようにする [Unity]

Posted at

はじめに

Unityを使っている人なら、一度はDebug.Logなどのログ出力がリリースビルドに与えるオーバーヘッドを気にしたことがあると思います。
今回はログ出力のコードをビルド時には含まないようにするスクリプトを実装します。

実装

ログ出力を行うメソッドにConditional属性をつけます。
引数にはこのメソッドを含める条件(この場合はUNITY_EDITOR)を指定します。
Conditional属性を付加すると、指定した条件を満たさない場合は呼び出し側のコードがコンパイルされなくなります。
下記の実装は既存のメソッドを置き換えているわけではなく、コンソールでの検索用に接頭辞などを追加したものになっているので不要な場合は適宜修正する必要があります。

DebugUtil.cs
using System.Diagnostics;
#if UNITY_EDITOR
using Debug = UnityEngine.Debug;
#endif

public static class DebugUtil
{
    private const string Condition = "UNITY_EDITOR";

    [Conditional(Condition)]
    public static void Report(object o)
    {
#if UNITY_EDITOR
        Debug.Log($"Report: {o}");
#endif
    }

    [Conditional(Condition)]
    public static void Warn(object o)
    {
#if UNITY_EDITOR
        Debug.LogWarning($"Warn: {o}");
#endif
    }
}

使い方

通常のDebug.Logのように呼び出します。

DebugUtil.Report($"clicked {name}");
DebugUtil.Warn($"cannot find enemies");

注意点

Conditional属性を付加したメソッド自体はコンパイルされます(そのため#ifディレクティブで中身を囲っています)。
また、実機でデバッグを行いたい場合もログ出力が行われなくなってしまうので、その場合は指定する条件を変更するなどして調整する必要があります。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?