読者です 読者をやめる 読者になる 読者になる

テラシュールブログ

旧テラシュールウェアブログUnity記事。主にUnityのTipsやAR・VR、ニコニコ動画についてのメモを残します。

【Unity】コンソールログを検索する方法

Unity スクリプト トラブルシューティング 最適化・デバッグ

Unityで開発を行っていると、膨大なコンソールログから1行を探して確認することが必要なケースが発生することがあります。
そんな時は、Editotr.Logを確認します。

f:id:tsubaki_t1:20150818092022p:plain

 

例えば自分の場合「ゲームが使用していないファイルをプロジェクト外に退避する」エディタ拡張を作成しています。
この機能は、スクリプト・シェーダー・マテリアル・テクスチャ・モデル・アニメーション・その他アセットの依存関係を整理し、そのうえでゲームを実行する上で不要なアセットをプロジェクト外に退避するアセットです。

f:id:tsubaki_t1:20150818092402g:plain

 

しかし、検証していくとプロジェクトが使用していない、不要なファイルまで残ってしまっている問題が確認されました。

この機能は「依存関係のマップ」を作る関係上、どのファイルから参照されているのかが重要な要素です。そのため、「実際に参照を行っているファイル群」と「エディタ拡張が参照を行っているファイル群」を比較する必要がありました。

f:id:tsubaki_t1:20150818093520p:plain

 

で「実際に参照を行っているファイル群」ですが、問題が発生するプロジェクトはインポートに3~40分かかるレベルの量なので、1個1個丹念にコードデバッガで探すのは現実的ではありません。(総当たりで依存関係をチェックしているのもあります)
こういったデータ量の多い物はデバッグログを使うのが楽なのですが、Unityの場合はコンソールログに検索が効かないので、問題のコードをログ一覧から見つけるのがかなり面倒です。
なのでEditor.Logに出力されたログを使用して確認します。

f:id:tsubaki_t1:20150818094135p:plain

 

Editor.Logには、Unity(システム側)やスクリプトが出力したログが全て格納されます。なので、これを検索可能なエディタで開けば問題のコードを「検索」する事が出来る訳です。

Consoleウィンドウ右上の三(コンテキストメニュー)より、Editor.Logが表示できます。秀丸で開きたい場合は直接ファイルを見に行くのが良さそうです。
ファイルは以下のパスにあります。

  • Windows
    C:\Users\username\AppData\Local\Unity\Editor\Editor.log
  • Mac
    ~/Library/Logs/Unity/Editor.log

f:id:tsubaki_t1:20150818094406g:plain

 

後は自分の場合は、消えないファイルを検索し「本当は参照していないファイルが参照していないか」を確認しました。結果、あり得ないファイルが参照していたので、あとは発生条件を検証してデバッグデバッグ

 

なおMacはconsoleで出すのでCleanで表示内容をスッキリ出来ますが、Windowsはふつうにテキストなのでスッキリ出来ません(初期化のタイミングは、エディタの再起動のタイミングです)
そのあたりを考えると、別ファイルへの書き出しを別途用意するのも「アリ」かもしれません。

関連

Editorログについて - 青空の月