Example #1
0
    /// <summary>
    /// 打开window面板选择图片文件并且copy图片到指定目录下
    /// </summary>
    /// <param name="saveName"></param>
    /// <param name="callback"></param>
    public void OpenDialogAndCopyImage(string saveName, Action <UnityEngine.Object> callback)
    {
        OpenFileName ofn = new OpenFileName();

        ofn.structSize   = Marshal.SizeOf(ofn);
        ofn.filter       = "图片文件(*.jpg*.png)\0*.jpg;*.png";
        ofn.file         = new string(new char[256]);
        ofn.maxFile      = ofn.file.Length;
        ofn.fileTitle    = new string(new char[64]);
        ofn.maxFileTitle = ofn.fileTitle.Length;
        string path = "";

        if (string.IsNullOrEmpty(_lastSelectPath))
        {
            path = Application.dataPath;
        }
        else
        {
            path = _lastSelectPath;
        }
        path = path.Replace('/', '\\');
        //默认路径
        ofn.initialDir = path;
        ofn.title      = "Open Project";

        ofn.defExt = "JPG";                                                         //显示文件的类型
                                                                                    //注意 以下项目不一定要全选 但是0x00000008项不要缺少
        ofn.flags = 0x00080000 | 0x00001000 | 0x00000800 | 0x00000200 | 0x00000008; //OFN_EXPLORER|OFN_FILEMUSTEXIST|OFN_PATHMUSTEXIST| OFN_ALLOWMULTISELECT|OFN_NOCHANGEDIR

        if (WindowDll.GetFile(ofn))
        {
            //记录上次选择的路径
            _lastSelectPath = ofn.file;
            _lastSelectPath = _lastSelectPath.Replace('\\', '/');
            int index = _lastSelectPath.LastIndexOf('/');
            _lastSelectPath = _lastSelectPath.Remove(index);
            StartCoroutine(LoadAndCopyImage(ofn.file, saveName, callback));
        }
    }