public string StackTrace; public UnityEngine.LogType LogType; } public static class LogHelper { public static IObservable<LogCallback> LogCallbackAsObservable() { var subject = new Subject<LogCallback>(); // callback内でSubjectに発行してあげるように作ることでRxにコンバート可能 UnityEngine.Application.RegisterLogCallback((condition, stackTrace, type) => { subject.OnNext(new LogCallback { Condition = condition, StackTrace = stackTrace, Log }); return subject; } } // 各処理が分離して記述可能になる、また合成処理が可能、などのメリットあり LogHelper.LogCallbackAsObservable() .Where(x => x.LogType == LogType.Warning) .Subscribe(); LogHelper.LogCallbackAsObservable() .Where(x => x.LogType == LogType.Error) .Subscribe(); Unityに多くあるデリゲートによるコールバックを IObservable<T>に変換するとかなりイケテル!