Unity调用系统窗口选择文件或文件路径 来赋值图片给物体

来源:互联网 发布:网络计划编制软件 编辑:程序博客网 时间:2024/06/14 21:58
1. 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);    }}
2.
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;        gameObject.GetComponent<RawImage>().texture = wwwTexture.texture;    }}
3.效果图
阅读全文
0 0