コガネブログ

平日更新を目標に Unity や C#、Visual Studio、ReSharper などのゲーム開発アレコレを書いていきます

【Unity】設定豊富な多機能コンソールウィンドウ「Console Enhanced Pro」紹介($21.60)

概要

2013/12/2 に、エディタ拡張用のアセット
「Console Enhanced Pro」がリリースされました

「Console Enhanced Pro」を導入すると、
Unity 標準よりも設定が豊富なコンソールウィンドウが使用できるようになります

検証環境

  • Unity 5.6.2f1
  • Console Enhanced Pro 2.6

表示

Unity メニューの「Window>Console Enhanced」を選択するとウィンドウが開きます
Ctrl + Shift + C でも開くことができます
Console Enhanced は基本的に Unity の組み込みコンソールと同様に出力されたログを表示します

f:id:baba_s:20170822111358p:plain

プロライセンスの適用

Console Enhanced はプロライセンスが有効になるまでフリーバージョンモードで動作します
プロライセンスをアクティベートするには、設定ダイアログからシリアルナンバーを入力します
シリアルナンバーはアセットを購入した時に Unity から送られてくる電子メールに含まれています
電子メールに添付されている PDF の「オーダー番号」がシリアルナンバーに該当します

  1. ConsoleE ウィンドウ内を右クリックして「Advanced Settings」を選択します
     
    f:id:baba_s:20170822111212p:plain

  2. 「License」タブを選択します
  3. 「Invoice Number or Serial Key」の入力欄にオーダー番号を入力します
     
    f:id:baba_s:20170822111223p:plain

  4. 「Activate ConsoleE Pro License」ボタンを押します
  5. 成功ダイアログが表示されて「Status」が「ConsoleE is activated」になれば適用完了です
     
    f:id:baba_s:20170822111233p:plain
     
    f:id:baba_s:20170822111244p:plain

テキスト検索

f:id:baba_s:20170822111327p:plain

ConsoleE ウィンドウの検索欄にテキストを入力すると
そのテキストを含むログのみが表示されます
Tab キーまたは Ctrl + F キーを押すことで
検索欄にフォーカスを合わせることができます
Esc キーを押して検索をキャンセルすることも可能です

コールスタック

f:id:baba_s:20170822165552p:plain

コールスタックの任意の行をダブルクリックすることで
そのスクリプトファイルの該当する行を開くことができます

スクリプトを開くアプリケーションの選択

f:id:baba_s:20170822165709p:plain

コールスタックの行を右クリックして「Open with」を選択すると
好きな外部エディタでスクリプトを開くことができます

複数選択

f:id:baba_s:20170822114556p:plain

Console Enhanced は複数選択をサポートしています
Shift を押しながらクリックすると一度に複数のログを選択できます
Ctrl + A ですべてのログを選択可能です
右クリックしてログをコピーしたり削除したりできます

項目 内容
Copy ログをコピー
Copy Callstacks コールスタックの文字列ごとログをコピー
Remove ログを削除

設定ダイアログ

ConsoleE ウィンドウ内を右クリックして
「Advanced Settings」を選択すると、詳細設定ダイアログが開きます

f:id:baba_s:20170822111255p:plain

f:id:baba_s:20170822111309p:plain

基本設定

2行目表示

f:id:baba_s:20170822114536p:plain

「Entry 2nd line」でログの表示行数を変更できます

  • Onle line

    f:id:baba_s:20170822114517p:plain

  • Two lines

    f:id:baba_s:20170822114525p:plain

ツールバー

f:id:baba_s:20170822142517p:plain

「Toolbar」でツールバーに表示するボタンを変更できます

f:id:baba_s:20170822160741p:plain

ボタン アイコン 内容
Clear f:id:baba_s:20170822161115p:plain すべてのログを削除
Collapse f:id:baba_s:20170822161145p:plain 重複するログをまとめる
Clear on Play f:id:baba_s:20170822161151p:plain オンならゲーム再生時にすべてのログを削除
Error Pause f:id:baba_s:20170822161157p:plain オンならエラーログ出力時にゲームを停止
Extra Info f:id:baba_s:20170822161206p:plain オンならログを出力した時間やオブジェクトの名前を表示
Small Buttons   オン
f:id:baba_s:20170822161305p:plain
オフ
f:id:baba_s:20170822161313p:plain

表示列

f:id:baba_s:20170822144301p:plain

「Colmuns & extra info」を設定すると
ログを出力した時間やオブジェクトの名前を表示するかどうかを変更できます

  • Hide

    f:id:baba_s:20170822144310p:plain

  • Time & object

    f:id:baba_s:20170822144321p:plain

スムーズな自動スクロール

f:id:baba_s:20170822114547p:plain

「Smooth auto-scroll」をオンにすると
新しいログが出力された時にコンソールの自動スクロールをスムーズにします

f:id:baba_s:20170822142525g:plain

ファイルパス表示

f:id:baba_s:20170822152141p:plain

「Hide file paths」をオンにすると
コールスタックに表示されるスクリプトのファイルパスを非表示にします

  • オン

    f:id:baba_s:20170822144800p:plain

  • オフ

    f:id:baba_s:20170822144810p:plain

末尾ログマーカー

f:id:baba_s:20170822164916p:plain

「Advanced Setting>General」の「End-of-log marker」をオンにすると
最後のログを表示している時に区切り線の色が変わります

f:id:baba_s:20170822152342g:plain

アイコンデザイン

「Icon Theme」でアイコンのデザインを変更できます

f:id:baba_s:20170822145533g:plain

フォントサイズと表示間隔

「Font Size」でフォントサイズを変更できます
「Padding」でログの表示間隔を調整可能です

f:id:baba_s:20170822162102g:plain

カスタムタブ

Console Enhanced では「ログ」「警告」「エラー」以外のタブを自分で作成できます

f:id:baba_s:20170822165411p:plain

ログまたはコールスタックの行を右クリックして
「Categorize>Create New」を選択するとタブの設定画面が開きます

Icon(アイコンの表示)

f:id:baba_s:20170822120043p:plain

項目 内容
Theme 使用するテーマ
Icon アイコンをプリセットから選択
Core color 左側はアイコンの色
右側は背景アイコンの色
Outline color 左側はアイコンのアウトラインの色
右側は背景アイコンのアウトラインの色
Background 背景アイコンの形
スライダーを動かすと下記の図形の順に変化
1. 三角形
2. 八角形
3. 吹き出し
4. 円形
5. ひし形
6. 四角形
Icon size アイコンのサイズ
Outline アウトラインのサイズ

Rows(行の表示)

f:id:baba_s:20170822120059p:plain

項目 内容
Colorize オンにするとテキストの色を変更可能
Text Color テキストの色
Even BG 偶数行の背景色
Odd Bg 奇数行の背景色
Restore Defaults デフォルト設定に戻す
Enable flash オンにすると背景のフラッシュエフェクトを有効化
Duration エフェクトの表示時間(秒)
Color エフェクトの色
Preview 設定したエフェクトのプレビューを再生

Keyword(タブに含むログ)

f:id:baba_s:20170822120110p:plain

項目 内容
Consume matches オンにすると該当するログは他のタブに含まれない
オフにすると該当するログは他のタブに含まれる
入力欄 タブに含むテキストを設定(改行すると複数のテキストを設定可能)

Misc(その他)

f:id:baba_s:20170822120119p:plain

項目 内容
Enabled オフにするとタブを無効化
Share with anther tab オンにすると他のタブの設定を継承
Share with 継承するタブ
Sharing 継承する項目
Open with コールスタックをクリックした時に開くアプリケーション
Consume matches 「Keyword」の「Consume matches」と同じ
Hide toolbar tab if empty オンにすると該当するログが存在しない場合にタブを非表示
"First 【タブ名】" button オンにすると該当する最初のログにジャンプするボタンを表示

タブ設定の保存と読み込み

f:id:baba_s:20170822162706p:plain

タブ設定は通常、プロジェクト内に保存されますが
タブ設定をプロジェクト外に保存して、複数の Unity プロジェクトで共有することができます

ラッパー関数の表示のグレーアウト

f:id:baba_s:20170822164731p:plain

「Advanced Setting>Wrappers」の「Hide wrappers from second line」をオンにして
入力欄にログ出力用のラッパー関数の名前を入力すると
コールスタックに表示されるラッパー関数の名前がグレーアウトして押せなくなります

例えば下記のようなラッパー関数を使用している場合、
入力欄に DebugUtils:Log と記述すると設定が適用されます

using UnityEngine;

public static class DebugUtils
{
    public static void Log( object message )
    {
        Debug.Log( message );
    }
}

f:id:baba_s:20170822165150p:plain

ファイルを開くアプリケーションを上書き

f:id:baba_s:20170822114506p:plain

「Advanced Setting>Open File」の「Override Open File Behaviour」の項目を設定すると
コールスタックの行がクリックされた時にファイルを開くアプリケーションを変更できます

その他の設定

f:id:baba_s:20170822155100p:plain

「Advanced Setting>Misc」からその他の設定を変更できます

再生中のコンパイル

f:id:baba_s:20170822155818p:plain

「Compile during play」を設定すると
Unity 再生中にスクリプトをコンパイルした時の挙動を変更できます

項目 内容
Immediate(default) 再生したままコンパイル
Compile on stop 停止時にコンパイル
Stop and compile 停止してコンパイル
Stop, compile, restart 停止してコンパイルして再生
Manual 何もしない

ステータスバーのクリック

f:id:baba_s:20170822155826p:plain

「Status bar clicks」をオンにすると
Unity エディタ左下のステータスバーに表示されるログをクリックした時に
ConsoleE ウィンドウを開くようになります

拡張機能

エディタ拡張のスクリプトを記述することで
Console Ehanced の下記の動作を変更できます

  • ConsoleE ウィンドウのコンテキストメニューの編集
  • Time.time などの追加情報を表示文字列に追加
  • ログエントリを選択したり、コールスタックをクリックした時のイベントをフック
using ConsoleE;
using UnityEditor;

[InitializeOnLoad]
public static class Example_Editor
{
    static Example_Editor()
    {
        Api.onClick                 += OnClick                  ;
        Api.onBuildMenu             += OnBuildMenu              ;
        Api.onSelection             += OnSelection              ;
        Api.onFormatObject          += OnFormatObject           ;
        Api.onFormatScript          += OnFormatScript           ;
        Api.onFormatCallstackEntry  += OnFormatCallstackEntry   ;
        Api.onFormatTime            += OnFormatTime             ;
        Api.onFormatFrame           += OnFormatFrame            ;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   
    }

    private static void OnClick( OnClickParams p )
    {
        // コールスタックがダブルクリックされた
    }

    private static void OnBuildMenu( OnBuildMenuParams p )
    {
        // コンテキストメニューの項目がクリックされた
    }

    private static void OnSelection( OnSelectionParams p )
    {
        // ログやコールスタックがクリックされた
    }

    private static string OnFormatObject( OnFormatItemParams p, string objectName )
    {
        // コンソールウィンドウに表示するオブジェクト名を返す
        return objectName;
    }

    private static string OnFormatScript( OnFormatItemParams p, string filename, bool hideExtension )
    {
        // コンソールウィンドウに表示するスクリプトのファイル名を返す
        return filename;
    }

    private static string OnFormatCallstackEntry( OnFormatItemParams p, string callstack, int indexRow )
    {
        // コンソールウィンドウに表示するコールスタックの名前を返す
        return callstack;
    }

    private static string OnFormatTime( OnFormatItemParams p, float time, bool isTimeApproximate )
    {
        // コンソールウィンドウに表示するログ出力の時間を返す
        return time.ToString();
    }

    private static string OnFormatFrame( OnFormatItemParams p, int frameCount, bool isFrameApproximate )
    {
        // コンソールウィンドウに表示するログ出力のフレームカウントを返す
        return frameCount.ToString();
    }
}

上記のスクリプトよりも詳細な拡張方法を知りたい場合は
「Assets/ConsoleE/Editor/Extensions.zip」を展開した中に入っている
「ConsoleE_Extensions.cs」がサンプルコードが参考になります

f:id:baba_s:20170822153241p:plain

カスタムボタン

通常のコンソールウィンドウと同様に
Console Enhanced はリッチテキストをサポートしています
さらに、次のようにカスタムボタンを表示することができます

f:id:baba_s:20170822163848p:plain

カスタムボタンは出力するログに次の形式のテキストを使用することで表示します

<ConsoleE_Button=【関数名】>【ボタンテキスト】</ConsoleE_Button>

呼び出す関数は静的メソッドにする必要があります

using UnityEngine;

public class Example : MonoBehaviour
{
    private void Awake()
    {
        var message = "_(´ཀ`」 ∠)_ <ConsoleE_Button=Example.Callback>復活</ConsoleE_Button>";
        Debug.Log( message );
    }

    private static void Callback()
    {
        Debug.Log( "ヽ(•̀ω•́ )ゝ✧" );
    }
}

無料版

Console Enhanced には無料版が存在します

Console Enhanced に興味がある方はまずこちらを使用してみるのが良いかなと思います
ただし、無料版はいくつかの機能が制限されているので注意が必要です

参考サイト様

http://unityconsole.com/readme/

関連記事