UnityのDebug.Logをビルドしたアプリケーションで実行させない
開発中、ついつい変数をDebug.Logで表示したり
Debug.Log("Init now");
みたいに状態確認に使います。
ただし、このDebug.Log,結構重くてUpdateなどの中で呼ぶのは
お勧めできません。時間は測ってないけど、C言語のprintfデバッグやってた時より格段に重いから相当。
あと、ユーザにこういうログを見せたくなかったりとか。
@yuujii あるある。あとは、Debug.Logもかなり重いので、Editor上では出しても、build時は切ったりしてます。
— meka (@kikatyan) 2014, 7月 12
@yuujii Debug.LogをMyDebugとかでラップして、
class MyDebug
void Log(string str)
{
#if UnityEditor
Debug.Log(str)
#endif
}
みたいにやってます
設定で無視できるなら嬉しい
— meka (@kikatyan) 2014, 7月 12
なんて話をしてたら
@yuujii @kikatyan ここの「Use Player Log」のチェックを外すのはどうでしょうか?
http://t.co/l14dgVG30T
— たじまはる - SKB10 (@hal_tajima00) 2014, 7月 12
とのご指摘が。
検証したところ、
BuildSettings->PlayerSettings
->UsePlayerSettingの
UsePlayerLogのチェックを外すと、
ビルドされたプログラムではLog関数が呼ばれないことを確認。
Log関数重いので助かる pic.twitter.com/OV0ygAdEn3
— meka (@kikatyan) 2014, 7月 13
@kikatyan チェックを外すと、
確かにLog関数が無視されるようで、
FixedUpdate内で大量にループして呼び出してFPSを落としたもの(体感2FPSくらいひどいの)が
通常のFPSまで改善された
— meka (@kikatyan) 2014, 7月 13
というわけで、Update内でデバッグ用にLog出しててフレーム落ちが気になるとか、
AppleStoreに出す時にログを出力するはねられる?とかの対策に使えるみたいです。