unity点击弹出文件夹(OpenFileName)

 

  原创:http://www.cnblogs.com/U-tansuo/archive/2012/07/10/GetOpenFileName.html 

 

 

 

unity点击弹出文件夹(OpenFileName)_第1张图片

这是效果  ,左上角是按钮 。

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


//unity3d调用win32打开对话框
[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 = @"C:\Users\焦云鹏\Desktop\Files";  //打开路径     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);
    }
}
2
using UnityEngine;

using System.Collections;

using System.Text;

using System.Runtime.InteropServices;

using System;

public class Test : MonoBehaviour
{

    public GameObject plane;
    private string path = @"C:\Files";

    //private string filePath = ;

    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 = "图片文件(*.jpg*.png)\0*.jpg;*.png"; //想要显示的文件的格式 (图片格式)         // "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 = path;                           //UnityEngine.Application.dataPath;//默认路径            
            Debug.Log("打开的文档地址为**********"+ofn.initialDir);

            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.GetComponent().material.mainTexture = wwwTexture.texture;
  }  */
}

 

效果如上图,再有研究,另开记录。

百度这个问题需要查:

unity 打开文件夹并选择文件

unity3d调用windows系统dialog选择文件夹的方法

 

 

 

 

你可能感兴趣的:(Unity,unity代码记录,unity功能操作记录)