Unity Editor【Open Folder Panel】- 打开选择文件夹窗口并记录文件夹路径

本文介绍了如何在UnityEditor编辑器环境下,利用EditorUtility类的OpenFolderPanel方法创建一个功能,当点击‘浏览’按钮时,弹出文件夹选择窗口,并记录所选文件夹路径。通过示例代码展示了参数的使用,包括窗口标题、默认路径和默认显示内容的设置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如图所示,在Unity Editor编辑器环境下编写这样一个功能:点击“浏览”按钮,打开一个窗口,选择文件夹并记录该文件夹的路径:

用到的API:EditorUtility类中的OpenFolderPanel方法:

// 摘要:
//     Displays the "open folder" dialog and returns the selected path name.
// 参数:
//   title:
//
//   folder:
//
//   defaultName:
[FreeFunction("RunOpenFolderPanel")] 
public static string OpenFolderPanel(string title, string folder, string defaultName);

第一个参数title:表示打开的窗口的标题:

第二个参数folder:打开窗口时的默认路径,例如传入Application.dataPath,则打开时路径为项目工程的Assets路径:

第三个参数defaultName:打开窗口时,“文件夹:”后的默认内容:

测试代码:

using UnityEngine;
using UnityEditor;

public class Example : EditorWindow
{
    [MenuItem("SKFramework/Example")]
    private static void Open()
    {
        GetWindow<Example>().Show();
    }
    private string path;
    private void OnGUI()
    {
        //水平布局
        GUILayout.BeginHorizontal();
        {
            GUILayout.Label("路径", GUILayout.Width(50f));
            path = GUILayout.TextField(path);
            if (GUILayout.Button("浏览", GUILayout.Width(50f)))
            {
                path = EditorUtility.OpenFolderPanel("窗口标题", Application.dataPath, "123");
            }
        }
        GUILayout.EndHorizontal();
    }
}
Unity中,如果你想要获取用户选择的Windows系统文件夹路径将其传递给Unity,你可以通过以下步骤实现: 1. **使用System.IO.DriveInfo**:首先,你需要引入 `using System.IO;`。然后,在需要获取路径的地方,创建DriveInfo对象,引导用户浏览文件系统: ```csharp void Start() { string selectedFolder = OpenFileDialog.OpenDirectory(); if (!string.IsNullOrEmpty(selectedFolder)) { DriveInfo drive = new DriveInfo(selectedFolder); Debug.Log("Selected folder path: " + drive.Root.FullName); // 输出选定文件夹的完整路径 } } ``` 这里使用了`OpenFileDialog.OpenDirectory()`函数来打开文件选择对话框,用户可以选择文件夹后,该函数返回所选路径。 2. **保存路径至 PlayerPrefs**:如果你想在应用程序关闭后还能保留路径,可以将路径保存到Unity的 PlayerPrefs: ```csharp PlayerPrefs.SetString("SelectedFolderPath", selectedFolder); ``` 在后续需要时,可以通过` PlayerPrefs.GetString("SelectedFolderPath")`来获取。 请注意,这种方法适用于用户交互的情况,例如在设置菜单或游戏中某个功能需要用户选择文件夹的时候。对于非用户交互需求,例如自动加载预设文件路径,你可能需要考虑其他更合适的解决方案。 **相关问题--:** 1. 如何确保获取的文件夹路径是有效的? 2. 我能在Unity中直接访问Windows系统的特定文件夹吗? 3. 如何处理用户取消选择文件夹的情况?
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CoderZ1010

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值