码迷,mamicode.com
首页 > 移动开发 > 详细

Unity输出PC端(Windows) 拖拽文件到app中

时间:2018-09-02 23:45:18      阅读:293      评论:0      收藏:0      [点我收藏+]

标签:unit   ugui   分享   The   pos   something   foreach   动态   文件路径   

需求:给策划们写一个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 + "\n"+
        pathList.Aggregate((a, b) => a + "\n" + b));

    StringBuilder sb = new StringBuilder();
    sb.Append("拖拽文件进来了\n\n");
    foreach (var path in pathList)
    {
        sb.Append(path);
        sb.Append("了\n\n");
    }
    MessageBox.Show(sb.ToString());
}

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

 技术分享图片

Unity输出PC端(Windows) 拖拽文件到app中

标签:unit   ugui   分享   The   pos   something   foreach   动态   文件路径   

原文地址:https://www.cnblogs.com/guxin/p/9575398.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!