Unity 控制檯雙擊打開文件夾

 點擊unity日誌響應事件,以後可以繼續擴展。

using System;
using System.IO;
using System.Reflection;
using UnityEditor;

public class LogEditor
{
    private static LogEditor m_Instance;
    public static LogEditor GetInstacne()
    {
        if (m_Instance == null)
        {
            m_Instance = new LogEditor();
        }
        return m_Instance;
    }
    private Type m_ConsoleWindowType = null;
    private FieldInfo m_ActiveTextInfo;
    private FieldInfo m_ConsoleWindowFileInfo;
 
    private LogEditor()
    {
        m_ConsoleWindowType = Type.GetType("UnityEditor.ConsoleWindow,UnityEditor");
        m_ActiveTextInfo = m_ConsoleWindowType.GetField("m_ActiveText", BindingFlags.Instance | BindingFlags.NonPublic);
        m_ConsoleWindowFileInfo = m_ConsoleWindowType.GetField("ms_ConsoleWindow", BindingFlags.Static | BindingFlags.NonPublic);
    }
 
    [UnityEditor.Callbacks.OnOpenAssetAttribute(-1)]
    private static bool OnOpenAsset(int instanceID, int line)
    {
        if (GetInstacne().OpenDirectory())
        {
            return true;
        }
        return false;
    }
    
    public bool OpenDirectory()
    {
        var windowInstance = m_ConsoleWindowFileInfo.GetValue(null);
        var activeText = m_ActiveTextInfo.GetValue(windowInstance);
        string content = activeText.ToString();

        var line1 = content.Substring(0,content.IndexOf("\n")) ;
        if(Directory.Exists(line1))
        {
            EditorUtility.RevealInFinder(line1);
            return true;
        }

        return false;
    }
 
 
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章