unity3d各种OpenFileDialog操作
来源:互联网 发布:徐贲 知乎 编辑:程序博客网 时间:2024/06/11 05:35
原文: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;
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
0 0
- unity3d各种OpenFileDialog操作
- unity3d各种OpenFileDialog操作
- unity3d各种OpenFileDialog操作
- unity3d各种OpenFileDialog操作
- unity3d各种OpenFileDialog操作
- unity3d各种OpenFileDialog操作
- unity3d各种OpenFileDialog操作
- unity3d各种OpenFileDialog操作
- unity3d各种OpenFileDialog操作和Win MessageBox
- Unity3D使用OpenFileDialog后崩溃
- OpenFileDialog的基本操作
- openfiledialog
- openfileDialog
- OpenFileDialog
- openFileDialog
- OpenFileDialog SaveFileDialog FolderBrowserDialog 文件路径操作
- unity3d LitJson 各种嵌套
- unity3d 各种优化综合
- 通过反射获取实体集合属性值并赋值给另一个实体集合
- C++ Primer 5th Edition 笔记
- 如何科学的操作git ignore
- There is no Action mapped for namespace /base and action name
- java中Date的格式注意事项
- unity3d各种OpenFileDialog操作
- HDU 5791 Two (DP)
- ubuntu有以下方式切换到root身份
- 设计模式学习之—装饰者模式
- Android学习网站资源
- mac使用brew安装LNMP,LAMP
- MoodsNote
- 泛型
- sleep和wait的区别