Unity 获取文件夹引用并读取文件夹路径

这篇具有很好参考价值的文章主要介绍了Unity 获取文件夹引用并读取文件夹路径。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

准备

  1. 编辑器中的文件夹属于DefaultAssets类型的资源
  2. EditorGUILayout.ObjectField 可以获取对象的引用
  3. AssetDatabase.GetAssetPath可通过对象的实例id获取资源路径
  4. DirectoryInfo 可获取目录内文件信息
  5. Path.GetFileNameWithoutExtension 可获取无后缀的文件名

示例1

弹出窗口 选择文件夹 打印文件夹内文件名

using UnityEditor;
using System.IO;
using System.Linq;
public class FolderInFileName
{
    DefaultAsset folder;
    string folderPath;
    string[] result;
    int length;
    public void OnGUI()
    {
        folder = EditorGUILayout.ObjectField("选择文件夹", folder, typeof(DefaultAsset), false) as DefaultAsset;
        if (folder != null)
        {
            folderPath = AssetDatabase.GetAssetPath(folder.GetInstanceID());

            DirectoryInfo info = new DirectoryInfo(folderPath);

            var files = info.GetFiles("*", SearchOption.AllDirectories).
                Where(value => { return !value.FullName.EndsWith(".meta"); }).ToArray();

            if (files != null)
            {
                length = files.Length;
                result = new string[length];
                for (int i = 0; i < length; i++)
                    result[i] = Path.GetFileNameWithoutExtension(files[i].Name);
                EditorGUILayout.Space();

                EditorGUILayout.LabelField("文件夹路径", folderPath);
                EditorGUILayout.LabelField("文件数量", length.ToString());
                for (int i = 0; i < length; i++)
                    EditorGUILayout.LabelField($"文件 {i + 1}", result[i]);
            }
        }
        else      
            EditorGUILayout.HelpBox("没有设置文件夹或文件后缀", MessageType.Warning);     
    }
}

public class PrintFolderInFileName : EditorWindow
{
    FolderInFileName folderInFileNames = new FolderInFileName();

    [MenuItem("Customs/PrinFileNams")]
    private static void OpenWindow()
    {
        var window = GetWindow<PrintFolderInFileName>();
        window.Show();
    }

    private void OnGUI()
    {
        folderInFileNames.OnGUI();
    }
}

示例2

点击文件夹 Inspector窗口打印文件名文章来源地址https://www.toymoban.com/news/detail-859856.html

using UnityEngine;
using UnityEditor;
using System.IO;
using System.Linq;

[CustomEditor(typeof(DefaultAsset))]
public class ShowFolderInFile : Editor
{
    public override void OnInspectorGUI()
    {
        string path = AssetDatabase.GetAssetPath(target);
        GUI.enabled = true;

        if (Directory.Exists(path))
        {
            if (path != null)
            {
                DirectoryInfo info = new DirectoryInfo(path);
                var files = info.GetFiles("*", SearchOption.AllDirectories).Where(value =>
                { return !value.FullName.EndsWith(".meta"); }).ToArray();
                if (files != null)
                {
                    var length = files.Length;
                    var result = new string[length];
                    for (int i = 0; i < length; i++)
                        result[i] = Path.GetFileNameWithoutExtension(files[i].Name);
                    EditorGUILayout.Space();

                    EditorGUILayout.LabelField("文件夹路径", path);
                    for (int i = 0; i < length; i++)
                        EditorGUILayout.LabelField($"文件 {i + 1}", result[i]);
                }
            }
        }
    }
}

到了这里,关于Unity 获取文件夹引用并读取文件夹路径的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包