【Unity】Unity EditorとDevelopment Buildの時のみDebug.Logを出力する

まとめ

  • System.Diagnostics.ConditionalAttributeをつけたメソッドを定義する。
  • 指定したシンボルが定義されていない場合、
    メソッド呼び出しを無視するようにコンパイラが処理してくれる。
  • 複数のシンボルを設定した場合はOR条件となる。

実装例

Unity EditorまたはDevelopment Buildの時のみDebug.Logが出力される

using UnityEngine;

namespace UtilityToolkit
{
    public class DebugLogger
    {
        /// <summary>
        /// Logs a message to the Unity Console 
        /// only when DEVELOPMENT_BUILD or UNITY_EDITOR is defined.
        /// </summary>
        /// <param name="message"></param>
        /// <returns></returns>
        [
            System.Diagnostics.Conditional("DEVELOPMENT_BUILD"), 
            System.Diagnostics.Conditional("UNITY_EDITOR"),
        ]
        public static void Log(object message)
        {
            Debug.Log(message);
        }

        /// <summary>
        /// Logs a warning message to the Unity Console 
        /// only when DEVELOPMENT_BUILD or UNITY_EDITOR is defined.
        /// </summary>
        /// <param name="message"></param>
        /// <returns></returns>
        [
            System.Diagnostics.Conditional("DEVELOPMENT_BUILD"),
            System.Diagnostics.Conditional("UNITY_EDITOR"),
        ]
        public static void LogWarning(object message)
        {
            Debug.LogWarning(message);
        }

        /// <summary>
        /// Logs an error message to the Unity Console 
        /// only when DEVELOPMENT_BUILD or UNITY_EDITOR is defined.
        /// </summary>
        /// <param name="message"></param>
        /// <returns></returns>
        [
            System.Diagnostics.Conditional("DEVELOPMENT_BUILD"),
            System.Diagnostics.Conditional("UNITY_EDITOR"),
        ]
        public static void LogError(object message)
        {
            Debug.LogError(message);
        }
    }
}

参考

qiita.com

docs.microsoft.com