unity3d调用win32打开对话框
来源:互联网 发布:steam动态桌面软件 编辑:程序博客网 时间:2024/06/01 10:08
//解决unity3D中使用OpenFileDialog报错的问题。实现unity3D打开资源管理器选择本地图片并显示。
<pre name="code" class="html">http://www.cnblogs.com/U-tansuo/archive/2012/07/10/2584447.html
//参考链接:<a target=_blank href="http://www.cnblogs.com/U-tansuo/archive/2012/07/10/2584447.html">http://www.cnblogs.com/U-tansuo/archive/2012/07/10/2584447.html</a>
//方便自己以后参考。
using System.Collections;using System.IO;using UnityEngine;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); }}public class LoadTexture : MonoBehaviour{ private Texture2D img = null;// Use this for initializationvoid Start () { }// Update is called once per framevoid Update () {} public void a() { } private string path = ""; public void Loadtexture() { /*OpenFileDialog od = new OpenFileDialog(); od.Title = "请选择头像图片"; od.Multiselect = false; od.Filter = "图片文件(*.jpg,*.png)|*.jpg;*.png"; if (od.ShowDialog() == DialogResult.OK) { path = UnityEngine.Application.streamingAssetsPath + "Temp/temp.png"; if (File.Exists(path)) { File.Delete(path); File.Copy(od.FileName, path); } else { File.Copy(od.FileName, path); } StartCoroutine(GetTexture("file://" + path)); }*/ } public void Load() { 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; img = wwwTexture.texture; } void OnGUI() { if (img != null) { GUI.DrawTexture(new Rect(500, 500, img.width, img.height), img); } } IEnumerator GetTexture(string url) { WWW www = new WWW(url); yield return www; if (www.isDone && www.error == null) { img = www.texture; Debug.Log(img.width + " " + img.height); byte[] data = img.EncodeToPNG(); File.WriteAllBytes(path, data); } }}
0 0
- unity3d调用win32打开对话框
- Unity调用Win32的打开和保存文件对话框
- unity3d中调用打开和保存对话框(PC发布)
- Unity3d打开文件选择对话框
- Win32 api使用中调用GetOpenFileName打开文件对话框无响应的解决方法
- win32如何调用系统颜色对话框
- MyGui调用Win32窗口打开保存文件
- Unity3D 调用 winform的颜色对话框
- vba使用win32 API(GetOpenFileName )实现打开文件对话框
- vba使用win32 API(GetOpenFileName )实现打开文件对话框
- vba使用win32 API(GetOpenFileName )实现打开文件对话框
- vba使用win32 API(GetOpenFileName )实现打开文件对话框
- vba使用win32 API(GetOpenFileName )实现打开文件对话框
- vba使用win32 API(GetOpenFileName )实现打开文件对话框
- vba使用win32 API(GetOpenFileName )实现打开文件对话框
- vba使用win32 API(GetOpenFileName )实现打开文件对话框
- vba使用win32 API(GetOpenFileName )实现打开文件对话框
- vba使用win32 API(GetOpenFileName )实现打开文件对话框
- 获取JAVA文件路径
- java从菜鸟到大神的成神之路学习路线_me
- 九度题目1525:子串逆序打印
- 编写和运行简单的Applet程序
- 微信 未读 置顶 删除 的简单实现
- unity3d调用win32打开对话框
- JAVA 常用包
- 倒三角形和等腰三角形
- JSP/JS获取表格当前行行号及行每一个单元格数据
- BZOJ-1699 Balanced Lineup 线段树区间最大差值
- Android Studio创建的安卓项目结构
- iOS项目和第三方SDK都使用了AFNetWorking
- Gamma矫正原理
- PopupWindow显示showAsDropDown和showAtLocation区别