您的位置:首页 > 移动开发 > Unity3D

unity----OpenFileDialog打开选择对话框

2015-02-10 12:10 471 查看


using UnityEngine;
using System.Collections;
using System;
using System.Runtime.InteropServices;

[ StructLayout( LayoutKind.Sequential, CharSet=CharSet.Auto )]  

public class OpenFileName 
{
    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 DllTest
{
[DllImport("Comdlg32.dll",SetLastError=true,ThrowOnUnmappableChar=true, CharSet = CharSet.Auto)]          
     public static extern bool GetOpenFileName([ In, Out ] OpenFileName ofn );   
     public static  bool GetOpenFileName1([ In, Out ] OpenFileName ofn )

    {
        return GetOpenFileName(ofn);
    }
}


using UnityEngine;

using System.Collections;

using System.Text;

using System.Runtime.InteropServices;

using System;

public class Test : MonoBehaviour {

    public GameObject plane;

    void OnGUI()
    {
        if(GUI.Button(new Rect(0,0,100,35),"OpenDialog"))
        {
            OpenFileName ofn = new OpenFileName();

            ofn.structSize = Marshal.SizeOf(ofn);

            //三菱(*.gxw)\0*.gxw\0西门子(*.mwp)\0*.mwp\0All Files\0*.*\0\0
            ofn.filter = "All Files\0*.*\0\0";

            ofn.file = new string(new char[256]);

            ofn.maxFile = ofn.file.Length;

            ofn.fileTitle = new string(new char[64]);

            ofn.maxFileTitle = ofn.fileTitle.Length;

            ofn.initialDir =UnityEngine.Application.dataPath;//默认路径

            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(DllTest.GetOpenFileName( ofn ))
            {

               // StartCoroutine(WaitLoad(ofn.file));//加载图片到panle

                Debug.Log( "Selected file with full path: {0}"+ofn.file );

            }

        }

    }

    IEnumerator WaitLoad(string fileName)
    {
        WWW wwwTexture=new WWW("file://"+fileName);

        Debug.Log(wwwTexture.url);

        yield return wwwTexture;

        plane.renderer.material.mainTexture=wwwTexture.texture;
    }
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: