【Unity】logEnabledを使ってLog出力を無効化してみた

開発をしている時だけ、ログ出力をさせたい!という事は多々あるかなと思いますが、その際に手軽にできるものとして、logEnabledをfalseにする方法があります。ただ、これはランタイムで設定できる為、ログ出力がされないだけで、関数に書いている処理は残っているのではないかな?と思ったので今回はそれを検証してみました。


環境

  • Unity2018.3.0f2
  • MacBookPro Mojave v10.14.3

実装

ボタンを押すと、Log関数内で変数をインクリメントする関数を呼ぶという処理を作ってみました。スクリプトはこんな感じに。

実行して、ボタンを押した際のキャプチャがこちら

ボタンを押すたびに、Countが増えログにも出力がされています。

次にStart関数内でlogEnabledをfalse設定にして試したものがこちらです。

実行して、ボタンを押してみたキャプチャがこちらです。

ログ出力はされなくなりましたが、Count表示の数は増えていきました。Debug.Log関数内に記載している処理は実行されてしまうというのがわかります。ログ出力にこういう形で処理を書く人は少ないと思いますが、処理自体が実行される為、ボトルネックになる可能性はあります。そこでConditionalを使ってみたらどうかなと思い、下記スクリプトを追加してみました。

※PlayerSettingsのScripting Defines SymbolsにENABLE_LOGGINGを記述するとLog出力されます。

実行して、ボタンを押してみたキャプチャがこちらです。

ログ出力もCountUp関数も実行されていないことがわかります。

まとめ

ログ出力を手っ取り早く無くしたい場合は、logEnabledをfalseにすれば簡単にできてしまうのでとても便利ですね。Log関数内の処理もなくしたい場合は、少し手間ですがConditionalを使ってUnityが提供している関数を全て定義しなおしてしまえばよさそうですね!