unity打开pc文件夹,并选择相应文件执行
kingryh
kingryh 1797 9
精华 脚本 2016-03-24 17:53
组图

    第一次发帖,有不足之处,还望指教
    最近项目要求,有本地链接(文件夹,存放相关档案与报告文本,word文档,execl表格)
    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);
        }
    }
    此处主要是对文件名内属性的封存,以便调用。
    此处是链接OpenFileDlg 示例
    using UnityEngine;
    using System.Collections;
    using System.Text;
    using System.Runtime.InteropServices;
    using System;
      
      
    public class OpenDocuments : MonoBehaviour
    {
        private bool flag = false;
      
        public void OpenDocument()
        {
            OpenFileName ofn = new OpenFileName();
      
            ofn.structSize = Marshal.SizeOf(ofn);
      
            ofn.filter = "Excel files(*.xls)|*.xls|Word files(*.doc)|*.doc;";
      
            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 = "E:\\BaoGuoSi\\"+"JianCeDangAn"; //默认路径
      
            ofn.defExt = "docx";
      
            //注意 一下项目不一定要全选 但是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);
                flag = true;    
            }
            if (flag == true)
            {
                System.Diagnostics.Process.Start(ofn.file);
      
            }
      
        }
      
        //使用打开文件夹,选取图片应用
        //IEnumerator WaitLoad(string fileName)
        //{
        //    WWW wwwTexture=new WWW("file://"+fileName);
      
        //    Debug.Log(wwwTexture.url);
      
        //    yield return wwwTexture;
      
        //    plane.GetComponent<Renderer>().material.mainTexture=wwwTexture.texture;
        //}
    }
    此处要两点需要注意 ofn.filter = "Excel files(*.xls)|*.xls|Word files(*.doc)|*.doc;";一是对你所需文件类型的设定,

    ofn.flags = 0x00080000 | 0x00001000 | 0x00000800 | 0x00000200 | 0x00000008;    //OFN_EXPLORER|OFN_FILEMUSTEXIST|OFN_PATHMUSTEXIST| OFN_ALLOWMULTISELECT|OFN_NOCHANGEDIR
    以及对文件权限的处理。
    最后就是我要说的重要一点,就是在弹出窗口后,如何执行文件——》System.Diagnostics.Process.Start(ofn.file);  启动文件进程
    此处链接Process.Start 方法
    注释部分是对图片文件的调用与使用

    图片:0.jpg

    图片:0.jpg

    1条评分, 鲜花+500
    • 鲜花500
      浏览文件挺方便的。
    分享:
    游客
    要评论请先登录 或者 注册
    hawk 管理员 2016-03-24 19:13 1楼
    浏览文件挺方便的。
    tf107 学者 2016-03-25 09:07 2楼
    这个有意思
    gaobiejiyi 学徒 2016-03-25 11:46 3楼
    666666
    未入门 学徒 2016-03-28 09:50 4楼
    文件类型没法限制   限制后什么文件都不显示了有时候    时灵时不灵
    钟富文 学徒 2016-04-07 11:38 5楼
    这个很厉害啊
    古月良云 新手 2016-04-17 14:30 6楼
    请问,如果我要讲Unity里面的数据用Excel的形式保存到电脑上该怎么写,例如调查问卷,目前我能做的是保存为txt文本,但我想进一步保存为格式更漂亮的图表形式!希望大神能帮忙看看怎么实现,谢谢!
    magicer 学徒 2016-04-19 09:00 7楼
    很不错的方法
    noflyzone 学徒 2016-04-22 08:42 8楼
    很牛啊,不过太依赖.net frame了
    秋月白 学者 2016-06-06 10:53 9楼
    mark
    返回顶部