コガネブログ

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

【Unity】Application.RegisterLogCallbackに複数のコールバックを登録できるようにするクラス

using UnityEngine;

private void Awake()
{
    Application.RegisterLogCallback(HandleLog);
}

private void HandleLog(string condition, string stackTrace, LogType type)
{
}

Application.RegisterLogCallbackを使用すると
Debug.Logで出力されたログの情報を取得できます

しかし、Application.RegisterLogCallbackでは
1つしかコールバック関数を登録できないので
複数のソースからコールバック関数を登録したい場合は
下記のようなクラスを作る必要があります

/// <summary>
/// Application.RegisterLogCallback に複数のコールバックを登録できるようにするクラス
/// </summary>
public static class LogCallbackRegister
{
    public static event Application.LogCallback LogCallback = delegate { }; // ログが出力された時に呼び出されます

    /// <summary>
    /// コールバックを登録するコンストラクタ
    /// </summary>
    static LogCallbackRegister()
    {
        Application.RegisterLogCallback(HandleLog);
    }

    /// <summary>
    /// ログが出力された時に呼び出されます
    /// </summary>
    private static void HandleLog(string condition, string stackTrace, LogType type)
    {
        LogCallback(condition, stackTrace, type);
    }
}
LogCallbackRegister.LogCallback += (condition, stackTrace, type) =>
{
};