文字列検索とか、フィルターとかできるConsoleを作る part.1 | 坂道で

坂道で

ゆるめ

昨日の記事に書いたように、とりあえず標準のConsoleより便利なオレオレConsoleの作成記録です。

1. Debug.Logを拾える事
2. メッセージをクリックしたら外部のエディタに飛べる事
3. 出力が(ほぼ)リアルタイムである事
4. 検索を使えるようにしたい
5. タグを使えるようにしたい


まずは、「1. Debug.Logを拾える事」の実装から。
これは至って単純で、Application.RegisterLogCallbackというメソッドで、ログ出力へのコールバックを設定してやればいいだけ。

ただ、この方法で登録できるコールバックは一つだけというのが痛い。
ので、Application.RegisterLogCallbackで登録するコールバックは、分配器的な役割にしたい。

ということで、そういうのを実装したのが、こちら

いろいろごちゃごちゃと書いてあるものの、やってることは大したことではなくて。
LogEventDistributor.Initメソッドで `Application.RegisterLogCallback (OnLogEvent)` してOnLogEventメソッドを登録。
OnLogEventメソッドは、登録されている他のコールバックへイベントを更に通知、と。
それだけです。

実装予定のオレオレConsoleで、 `LogEventDistributor.AddLogCallback(オレオレConsole.オンろぐ)` とでも書いてやればログを拾えるようになる、はず?
あとは、拾ったログをEditorWindow当たりを継承して表示してやれば、見れるものになる、かな?
そんなわけで、次回は「3. 出力が(ほぼ)リアルタイムである事」あたりを攻める予定です。


お疲れ様です。


// -------- 追記 -------
本当は、そもそもAppliction.RegisterLogCallbackを使いたくないのですが、何かいい方法って無いんでしょうか。
混ぜるAssetによっては、コールバックの上書きしまくり・・・なんて状況も起こりうるわけですよね。
コレ以外には、ログファイルをFileWatcherでごにょる、とかでしょうか。
ぐぬぬ。