Skip to content

Instantly share code, notes, and snippets.

@allanolivei
Created February 27, 2014 21:38
Show Gist options
  • Save allanolivei/9260107 to your computer and use it in GitHub Desktop.
Save allanolivei/9260107 to your computer and use it in GitHub Desktop.
Unity 3d : Get Selected Folder in Project Window
using UnityEngine;
using UnityEditor;
using System.Collections;
using System.IO;
public static class UnityUtil
{
public static string GetSelectedPathOrFallback()
{
string path = "Assets";
foreach (UnityEngine.Object obj in Selection.GetFiltered(typeof(UnityEngine.Object), SelectionMode.Assets))
{
path = AssetDatabase.GetAssetPath(obj);
if ( !string.IsNullOrEmpty(path) && File.Exists(path) )
{
path = Path.GetDirectoryName(path);
break;
}
}
return path;
}
}
@wappenull
Copy link

@AlexZonov
Copy link

Stable cross-platform solution, supports folders and files. Default path is Application.dataPath

public static string GetProjectWindowFolder()
{
	string projectPath = new DirectoryInfo(Application.dataPath).Parent.FullName;
	string objectProjectPath = AssetDatabase.GetAssetPath(Selection.activeObject);
	string objectAbsolutePath = string.IsNullOrEmpty(objectProjectPath) ? Application.dataPath : $"{projectPath}/{objectProjectPath}";
	string objectCorrectAbsolutePath = objectAbsolutePath.Replace('/', Path.DirectorySeparatorChar).Replace('\\', Path.DirectorySeparatorChar);
	string folderAbsolutePath = File.Exists(objectCorrectAbsolutePath) ? Path.GetDirectoryName(objectCorrectAbsolutePath) : objectCorrectAbsolutePath;
	return Path.GetRelativePath(projectPath, folderAbsolutePath);
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment