以下の内容はhttps://baba-s.hatenablog.com/entry/2020/11/24/093700より取得しました。


【Unity】Debug.Log する時に Application.logMessageReceivedThreaded を無視する方法

ソースコード

using System;
using System.Collections.Generic;
using System.Reflection;
using UnityEngine;

public class Example : MonoBehaviour
{
    private readonly List<string> m_conditions = new List<string>();

    private void Awake()
    {
        Application.logMessageReceivedThreaded += ( condition, trace, type ) =>
        {
            m_conditions.Add( condition );
        };
    }

    private void OnGUI()
    {
        // 通常の Debug.Log(Application.logMessageReceivedThreaded が呼び出される)
        if ( GUILayout.Button( "Log" ) )
        {
            Debug.Log( "ピカチュウ" );
        }

        // Application.logMessageReceivedThreaded が呼び出されない Debug.Log
        if ( GUILayout.Button( "Log" ) )
        {
            var attrs     = BindingFlags.GetField | BindingFlags.Static | BindingFlags.NonPublic;
            var type      = typeof( Application );
            var field     = type.GetField( "s_LogCallbackHandlerThreaded", attrs );
            var @delegate = ( Delegate ) field.GetValue( null );

            field.SetValue( null, null );

            Debug.Log( "ピカチュウ" );

            field.SetValue( null, @delegate );
        }

        foreach ( var condition in m_conditions )
        {
            GUILayout.Label( condition );
        }
    }
}



以上の内容はhttps://baba-s.hatenablog.com/entry/2020/11/24/093700より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14