昨日の記事に書いたように、とりあえず標準の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でごにょる、とかでしょうか。
ぐぬぬ。