开发平台:Unity 2020
编程平台:Visual Studio 2022
使用 UnityEditor.EditorUtility.OpenFilePanel
使用背景:仅限制在编辑器模式下可用。无法参与发布项目中调用。
csharp
public void ReadFile<T>()
{
var thisFile = Selection.activeObject as T;
if(thisFile != null)
{
var thisFilePath = EditorUtility.OpenFilePanel("标题", "打开目录路径", ".*", false);
if(string.isNullOrEmpty(thisFilePath))
{
var thisFileBytes = File.ReadAllBytes(thisFilePath);
thisFile.LoadImage(fileContent);
}
}
}
核心方法
UnityEditor.EditorUtility.OpenFilePanel(string title, string directory, string extension, bool multiselect)
附注: directory=string.Empty
:指向 Asset 目录路径
使用 System.Windows.Forms.OpenFileDialog
如果期望于发布项目中调用文件对话窗,则需要引入 System.Windows.Forms.dll 程序集至 plugin 目录中。
csharp
public static bool OpenFile(string rootPath = UnityEngine.Application.dataPath, out string filePath)
{
if (string.IsNullOrEmpty(rootPath))
{
filePath = string.empty;
return false;
}
OpenFileDialog openFileDialog = new OpenFileDialog
{
Title = "选择文件", // 对话框标题
InitialDirectory = @"C:\\", // 初始目录
Filter = "文本文件 (*.txt)|*.txt|所有文件 (*.*)|*.*", // 文件过滤器
FilterIndex = 2, // 默认过滤器索引
RestoreDirectory = true, // 是否恢复之前的目录
Multiselect = false // 是否允许多选
};
bool isOk = thisDialog.ShowDialog().OK;
filePath = isOk ?
thisDialog.FileName : string.Empty;
return isOk;
}