首页 > 其他分享 >Unity 编辑器中获取选中的文件夹、文件路径

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

时间:2024-06-21 20:54:46浏览次数:10  
标签:string 路径 编辑器 获取 Unity 文件夹 选中 path

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

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


标签:string,路径,编辑器,获取,Unity,文件夹,选中,path
From: https://www.cnblogs.com/TonyCode/p/18261318

相关文章

  • Unity手写模拟DoTween中的To功能
    usingSystem;usingSystem.Collections;usingSystem.Collections.Generic;usingUnityEngine;publicclassDT:MonoBehaviour{publicfloatbeginValue,endValue;publicfloatbeginTime,times;publicAction<float>action;publicAct......
  • Unity3D轮转图(有回正效果)
    注意:MainCamera需要挂载PhysicsRayCaster      Hierarchy中添加UI里面的EventSystem对象(用来相应拖拽事件)usingDG.Tweening;usingSystem.Collections.Generic;usingUnityEngine;usingUnityEngine.EventSystems;usingSystem.Linq;publicclassRotat......
  • Unity初始位置初始化设置
    一、Transform面板介绍参数说明:        Position:位置;        Rotation:角度;        Scale:   比例。二、在Transform面板填写参数,如图所示:三、编写代码转换物体位置、角度、比例   1、位置转换:代码说明:        将目前游戏......
  • Unity相机及物体的移动步骤
    一、在Scenes场景文件夹建立游戏场景 二、在游戏场景里面建立游戏对象并且初始化位置1、建立游戏对象  2、初始化位置 3、把相机拉到游戏对象上(Reset一下位置)【注:这一步是操作相机的移动,物品的操作不用此步骤。】  三、建立CharacterController组件1、有Ca......
  • 【Unity动画系统】Amimator Controller的概念及其使用示例
    Unity的AnimatorController是动画系统中的一个核心组件,它负责管理和控制动画状态机(AnimationStateMachine)的行为。AnimatorController包含了动画状态、转换规则、以及用于控制动画流程的参数。AnimatorController的概念:动画状态(AnimationStates):代表单个动画剪辑(Animati......
  • 24.3K star!一个轻量级且高度可配置的现代化命令行文本编辑器
    大家好,今天给大家分享的是一个轻量级且高度可配置的现代化命令行文本编辑器。micro是一个轻量级且高度可配置的命令行文本编辑器,以其简洁的设计和强大的插件系统著称。该项目强调速度与效率,适合那些追求快速编辑体验并希望保持系统资源占用低的用户。项目介绍micro旨在成为n......
  • Android 11.0 关于点击FolderIcon全屏显示Folder文件夹功能实现
    1.前言在11.0的系统ROM定制化开发中,在实现Folder文件夹的相关定制中,有需求要求在点击FolderIcon的文件夹缩略图的图标的时候,当展开文件夹Folder的时候,需要全屏显示Folder的功能,所以就需要分析下文件夹展开流程,然后实现全屏展开文件夹的功能2.关于点击FolderIcon全屏显示Fo......
  • 掌握Postman WYSIWYG编辑器:提升API开发效率的秘诀
    Postman是一款强大的API开发和测试工具,它提供了多种方式来构建和测试API请求。WYSIWYG(所见即所得)编辑器是Postman中的一个特性,允许用户以一种更直观、更易于操作的方式来编辑和格式化请求的各个部分。本文将详细介绍如何在Postman中使用WYSIWYG编辑器,以及它如何帮助提升API......
  • 【名词解释】Unity中的3D物理系统:触发器
    在Unity的3D物理系统中,触发器(Trigger)是一种特殊的碰撞体,用于检测物体进入或离开一个特定区域的事件,但它不会像普通碰撞体那样产生物理碰撞反应。触发器通常用于实现非物理交互,如检测玩家进入特定区域、开启门、触发事件等。名词解释:Trigger:一种特殊的碰撞体,用于检测物体的进......
  • React项目中使用轻量富文本编辑器
    React项目中使用轻量富文本编辑器安装npminstallreact-quill创建编辑器组件//src/MyQuillEditor.jsimportReact,{useState}from'react';importReactQuillfrom'react-quill';import'react-quill/dist/quill.snow.css';//引入样式constMyQuillEdi......