LoginSignup
4
3

More than 5 years have passed since last update.

【UnityEditor】Projectビューで現在開いているディレクトリを取得する

Last updated at Posted at 2017-01-09

はじめに

Projectビューで開いている場所のパスを取得する方法を調べてみました。

環境

Unity 5.5.0f3
Windows 10

カレントディレクトリの在りか

UnityEditor.ProjectBrowser クラスの GetActiveFolderPath() メソッドを実行するとカレントディレクトリが取得できます。
このメソッドは非公開なのでリフレクションを使って呼び出してやります。

ソースコード

以下のメソッドを実行するとカレントディレクトリが取得できます

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); 
    }
}

結果
image

4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3