zoukankan      html  css  js  c++  java
  • Unity输出PC端(Windows) 拖拽文件到app中

    需求:给策划们写一个PC端(Window)的Excel导表工具。本来用OpenFile打开FileExplorerDialog后让他们自己选择想要添加的Excel文件就行了,结果有个需求是希望能拖拽Excel文件直接添加进来,觉得这样做更方便。

    桌面应用用winform和wpf来写的话,这个功能应该还挺好做,用Unity来做就比较蛋疼了。。。查了一下多是调用win32的api。

    概括一下,就是需要拖过文件管理器选文件,和通过鼠标拖拽的方式选中文件。

    这个导表工具大致关键点是:

    1、常规方式导入Excel文件。Unity中用UGUI拼好界面,做一个Item模板(可做为prefab预制体),点按钮打开FileExplorerDialog,多选Excel文件后按确定,动态生成Item加入到ScrollView的Content下。要求ScrollView下的Content添加Content Size Fitter和Grid Layout Group组件。这种导入方式建议用Crosstale的FileBrowser插件(这里)。

    2、Window平台下用拖拽文件到app窗口中的方式添加文件。建议使用这个工具(这里),主要是C#调用win32的api。FileDragAndDrop.cs文件中有用法样例。稍微加一句MessageBox输出拖拽进app的文件路径:

    void OnFiles(List<string> pathList, POINT aPos)
    {
        // do something with the dropped file names. aPos will contain the 
        // mouse position within the window where the files has been dropped.
        Debug.Log("Dropped "+pathList.Count+" files at: " + aPos + "
    "+
            pathList.Aggregate((a, b) => a + "
    " + b));
    
        StringBuilder sb = new StringBuilder();
        sb.Append("拖拽文件进来了
    
    ");
        foreach (var path in pathList)
        {
            sb.Append(path);
            sb.Append("");
        }
        MessageBox.Show(sb.ToString());
    }

    测试一下,运行后拖文件进来,效果如下:

     

    建议:如果只是想做一个桌面应用,真心不建议用Unity。Unity也就拼个UI,很多跟操作系统交互的功能很难做(比如这次的拖拽文件进窗体,响应快捷键等)。建议选用.Net原生开发,如WPF。

  • 相关阅读:
    编写代码的「八荣八耻」- 以用户易用为荣,以复杂歧义为耻
    《跃迁-成为高手的技术》之联机学习
    《跃迁-成为高手的技术》感悟
    JAVA SPI(Service Provider Interface)原理、设计及源码解析(其一)
    测试了一下编解码的执行效果
    谈面试中的亮点
    稳定性「三十六计」实战和背后的逻辑
    Python,Jupyter Notebook,IPython快速安装教程
    Python多进程编程
    R语言基础:数组&列表&向量&矩阵&因子&数据框
  • 原文地址:https://www.cnblogs.com/guxin/p/9575398.html
Copyright © 2011-2022 走看看