Unity对资源管理器操作 打开资源管理器选择文件并筛选文件

打开资源管理器

Application.OpenURL(path);

打开选择文件  筛选文件类型(只要type类型的文件显示)

 public void Openfile(string type)
    {

        OpenFileDlg pth = new OpenFileDlg();
        pth.structSize = System.Runtime.InteropServices.Marshal.SizeOf(pth);

        pth.filter = "文件(*." + type + ")\0*." + type + "";//筛选文件类型
        //pth.filter = "图片文件(*.jpg*.png)\0*.jpg;*.png";
        pth.file = new string(new char[256]);
        pth.maxFile = pth.file.Length;
        pth.fileTitle = new string(new char[64]);
        pth.maxFileTitle = pth.fileTitle.Length;
        pth.initialDir = Application.streamingAssetsPath.Replace('/', '\\');  // default path
        pth.title = "选择项目json";
        pth.defExt = "JPG";//显示文件类型
        pth.flags = 0x00080000 | 0x00001000 | 0x00000800 | 0x00000200 | 0x00000008;
        if (OpenFileDialog.GetOpenFileName(pth))
        {
            string filepath = pth.file;//选择的文件路径;

            DirectoryInfo i = new DirectoryInfo(filepath);

            //上级目录
            string path = i.Parent.FullName;//返回文件的上级目录

            ProjectData openprodata = new ProjectData();
            openprodata.proname = Path.GetFileNameWithoutExtension(path);//返回路径的最后一个文件夹名称
           }

调用的是openfileDgl      搬走不谢

using System;
using System.Runtime.InteropServices;
 
[ StructLayout( LayoutKind.Sequential, CharSet=CharSet.Auto )]  
 
public class OpenFileDlg
{
    public int      structSize = 0;
    public IntPtr   dlgOwner = IntPtr.Zero; 
    public IntPtr   instance = IntPtr.Zero;
    public String   filter = null;
    public String   customFilter = null;
    public int      maxCustFilter = 0;
    public int      filterIndex = 0;
    public String   file = null;
    public int      maxFile = 0;
    public String   fileTitle = null;
    public int      maxFileTitle = 0;
    public String   initialDir = null;
    public String   title = null;   
    public int      flags = 0; 
    public short    fileOffset = 0;
    public short    fileExtension = 0;
    public String   defExt = null; 
    public IntPtr   custData = IntPtr.Zero;  
    public IntPtr   hook = IntPtr.Zero;  
    public String   templateName = null; 
    public IntPtr   reservedPtr = IntPtr.Zero; 
    public int      reservedInt = 0;
    public int      flagsEx = 0;
}
 
public class OpenFileDialog
{
	[DllImport("Comdlg32.dll",SetLastError=true,ThrowOnUnmappableChar=true, CharSet = CharSet.Auto)]          
	public static extern bool GetOpenFileName([ In, Out ] OpenFileDlg ofd );
}

 

你可能感兴趣的:(unity)