欢迎来到我|

畅知

园龄:1年4个月粉丝:68关注:22

Unity 编辑器中获取选中的文件夹、文件路径

编辑器中获取选中的文件夹、文件路径

using UnityEditor;
using UnityEngine;
using Object = UnityEngine.Object;
public class MyEditorScript
{
[MenuItem("Assets/PrintSelectedFolderPath")]
static void PrintSelectedFolderPath()
{
// 第一种方式
// 只能访问选中的文件 选中的文件夹则不会打印
// 获取选中的对象 仅仅对File有效
var obj = Selection.activeObject;
// 获取选中对象的路径
string path = AssetDatabase.GetAssetPath(obj);
Debug.Log("通过Selection.activeObject获取的路径: " + path);
// -----------------第二种方式-------------------------------
//支持多选
string[] guids = Selection.assetGUIDs;//获取当前选中的asset的GUID
for (int i = 0; i < guids.Length; i++)
{
string assetPath = AssetDatabase.GUIDToAssetPath(guids[i]);//通过GUID获取路径
Debug.Log("通过GUID获取的路径"+Application.dataPath + assetPath.Substring(6));
}
//第三种方式访问路径
Debug.Log("遍历Object来获取对应的路径" + Application.dataPath + GetCurrentAssetDirectory().Substring(6));
}
public static string GetCurrentAssetDirectory()
{
foreach (var obj in Selection.GetFiltered<Object>(SelectionMode.Assets))
{
var path = AssetDatabase.GetAssetPath(obj);
if(string.IsNullOrEmpty(path))
continue;
if (System.IO.Directory.Exists(path))
{
return path;
}else if (System.IO.File.Exists(path))
{
return System.IO.Path.GetDirectoryName(path);
}
}
return "";
}
}

使用案例:

访问某个具体的文件:

image

三种方式都可以访问出路径:

image

访问某个具体的文件夹:

image

则第一种方式Selection.activeObject便不可行[笔者在这里踩坑~]

同样的,如果访问的文件夹内容为空,则三种方式均可打印出路径:

image

image


本文作者:畅知

本文链接:https://www.cnblogs.com/TonyCode/p/18261318

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   畅知  阅读(503)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· [翻译] 为什么 Tracebit 用 C# 开发
· 腾讯ima接入deepseek-r1,借用别人脑子用用成真了~
· Deepseek官网太卡,教你白嫖阿里云的Deepseek-R1满血版
· DeepSeek崛起:程序员“饭碗”被抢,还是职业进化新起点?
· RFID实践——.NET IoT程序读取高频RFID卡/标签
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起