[UnityEditor] 프로젝트 뷰에서 현재 열려 있는 디렉토리 가져오기

개시하다


프로젝트 뷰에서 열린 위치 경로를 가져오는 방법을 조사했습니다.

컨디션


Unity 5.5.0f3
Windows 10

현재 디렉토리 위치


4UnityEditor.ProjectBrowser종류의 4GetActiveFolderPath()방법은 현재 디렉터리를 얻을 수 있습니다.
이 방법은 공개되지 않기 때문에 반사법으로 불러낸다.

소스 코드


다음 방법을 실행하면 현재 디렉터리를 얻을 수 있습니다
static string GetCurrentDirectory()
{
    var flag = BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Static | BindingFlags.Instance;
    var asm = Assembly.Load("UnityEditor.dll");
    var typeProjectBrowser = asm.GetType("UnityEditor.ProjectBrowser");
    var projectBrowserWindow = EditorWindow.GetWindow(typeProjectBrowser);
    return (string)typeProjectBrowser.GetMethod("GetActiveFolderPath", flag).Invoke(projectBrowserWindow, null); 
}

사용 예(Windows 10)


명령 프롬프트를 시작하고 Project 뷰의 현재 디렉토리로 이동


Ctrl 키 + T를 사용하여 명령 프롬프트를 시작합니다.
EditorRunTerminal.cs
using UnityEditor;
using System.Diagnostics;
using System.Reflection;

public class EditorRunTerminal
{
    [MenuItem("Window/Run Terminal %t")]
    static void RunTerminal()
    {
        Process p = new Process();
        p.StartInfo.FileName = System.Environment.GetEnvironmentVariable("ComSpec");
        p.StartInfo.Arguments = "/k cd " + GetCurrentDirectory();
        p.Start();
    }

    static string GetCurrentDirectory()
    {
        var flag = BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Static | BindingFlags.Instance;
        var asm = Assembly.Load("UnityEditor.dll");
        var typeProjectBrowser = asm.GetType("UnityEditor.ProjectBrowser");
        var projectBrowserWindow = EditorWindow.GetWindow(typeProjectBrowser);
        return (string)typeProjectBrowser.GetMethod("GetActiveFolderPath", flag).Invoke(projectBrowserWindow, null); 
    }
}
결실

좋은 웹페이지 즐겨찾기