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

1 编辑模式(Editor)下:

string path = EditorUtility.OpenFilePanel("Load png Textures of Directory", "", "");
WWW ww=new WWW("file:///"+path);
print(ww.url);
yield return ww;
gui.texture=ww.texture;

2.非编辑模式:

OpenFileDialog ofd = new OpenFileDialog();   //new一个方法
 ofd.InitialDirectory ="file://"+UnityEngine.Application.dataPath;  //定义打开的默认文件夹位置//定义打开的默认文件夹位置
if(ofd.ShowDialog()==DialogResult.OK)
{
//显示打开文件的窗口
Debug.Log( ofd.FileName);
}
以上操作需要添加 System.Windows.Forms.dll,放在Plugins文件夹下,同时需要更改.net 2.0 Subset为.net2.0 

3、unity3d调用win32打开对话框

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); 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;
}
}

参考知识:1、http://msdn.microsoft.com/en-us/library/system.runtime.interopservices.inattribute%28v=vs.85%29
2、http://msdn.microsoft.com/en-us/library/windows/desktop/ms646839%28v=vs.85%29.aspx
3、C#和win32类型对应
4、http://blog.csdn.net/wanfang323/article/details/6372995

 

最新文章

  1. mui框架中底部导航的跳转1
  2. JavaScript获取两个数之间的任意随机数
  3. pgpgin|pgpgout|pswpin|pswpout意义与差异
  4. BZOJ 4408 神秘数
  5. ubuntu 停在开机界面
  6. xrdp远程 & watchdog 启用与测试 & WebRTC
  7. centos打开3306端口
  8. innerText与innerHTML的区别
  9. DevExpress 学习使用之 TreeList
  10. linux 查看 cpu 和内存的命令 - top
  11. JavaScript中对数组和数组API的认识
  12. vue 封装组件
  13. Git和代码规范
  14. 好看的alert弹出框sweetalert
  15. springboot 学习之路 20 (整合RabbitMQ)
  16. 【搜索】POJ-2718 贪心+枚举
  17. NYOJ 数独 DFS
  18. 用java解析在OpenStreetMap上下载的地图数据
  19. 常问面试题:C++中sizeof的陷阱及应答
  20. Delphi编码转换

热门文章

  1. Python爬虫一些操作headers与cookies的便捷工具
  2. js动态插入标签代码(insertAdjacentHTML)
  3. matlab给图片插入说明文字
  4. BZOJ 1600 [Usaco2008 Oct]建造栅栏:dp【前缀和优化】
  5. struts2 自定义类型转化 第三弹
  6. Go丨语言对数据库操作报错 panic: dial tcp 127.0.0.1:3306: connectex: No connection could be made because the target machine actively refused it.
  7. L91
  8. form 提交数据编码梳理
  9. Posix线程编程指南(1)
  10. 每天一个linux命令(5):mkdir命令