需求:给策划们写一个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。Unity也就拼个UI,很多跟操作系统交互的功能很难做(比如这次的拖拽文件进窗体,响应快捷键等)。建议选用.Net原生开发,如WPF。

Unity输出PC端(Windows) 拖拽文件到app中的更多相关文章

  1. 移动端的拖拽排序在react中实现 了解一下

    最近做一个拖拽排序的功能找了好几个有一个步骤简单,结合redux最好不过了,话不多说上代码 第一步: npm install react-draggable-tags --save 第二步 sort. ...

  2. ubuntu不能自windows拖拽文件解决办法

    由虚拟机的安装更新所致,及时安装更新vmware  tools 命令:tar -xzvf VMwareTools-10.0.6-3595377.tar.gz进入解压后的目录,执行:sudo ./wmw ...

  3. window响应拖拽文件操作

    window响应拖拽文件操作 1.首先调用DragAcceptFiles,让控件或者窗体支持文件拖动操作函数功能:用来为拖放文件作初始化.函数原型: void DragAcceptFiles( HWN ...

  4. 解决Duilib集成CEF浏览器在Win10无法向客户区拖拽文件

    在Duilib中集成CEF浏览器项目实际开发中,遇到一个问题. 一个需求从资源管理器(桌面)拖拽文件到客户端,窗口捕获WM_DROPFILES消息然后进行消息处理,但客户区是集成的CEF浏览器,浏览器 ...

  5. [Java]接受拖拽文件的窗口

    至于这个问题,Java的awt.dnd包下提供了许多完成这一功能的类 例如DropTarget.DropTargetListener等 先来讲一下DropTarget类,这个类完成和拖拽.复制文件等操 ...

  6. atitit.D&D drag&drop拖拽文件到界面功能 html5 web 跟个java swing c#.net c++ 的总结

    atitit.D&D drag&drop拖拽文件到界面功能 html5 web 跟个java swing c#.net c++ 的总结 1. DND的操作流程 1 2. Html5 注 ...

  7. vm虚拟机Kali无法拖拽文件解决办法

    vm虚拟机Kali无法拖拽文件解决办法 apt-get updateapt-get install open-vm-tools-desktop fusereboot

  8. 在windows系统的文件右键菜单中增加“命令提示符”

    本实用小工具能够在windows系统的文件右键菜单中增加“命令提示符”,方便快速进入制定文件的命令提示窗口,避免逐层输入或复制文件夹路径,极其实用. 工具下载地址如下:360云盘(访问密码:5b71) ...

  9. Unity读Excel 输出PC端(Windows)后不能读取的问题

    问题:在Unity中用ExcelDataReader读Excel时,在编辑器模式下可以正常读取,但是在导出PC端app后读Excel却会报空,Excel读取失败. 要点: 1.把库文件Excel.dl ...

随机推荐

  1. Java笔记(八)TreeMap & TreeSet & LinkedHashMap

    TreeMap & TreeSet & LinkedHashMap 一.TreeMap HashMap缺陷:键值对之间没有特定的顺序.在TreeMap中, 键值对之间按键有序,Tree ...

  2. iframe边距问题解决

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  3. Django——邮件发送

    在settings中添加关键信息 EMAIL_HOST = 'smtp.qq.com' #不同的邮箱有不同的发件地址(收件地址) EMAIL_PORT = 25 #smtp端口号 EMAIL_HOST ...

  4. NodeJS Stream流

    NodeJS Stream流 流数据在网络通信中至关重要,nodeJS用Stream提供了一个抽象接口,node中有很多对象实现了这个接口,提供统一的操作体验 基本流类型 NodeJS中,Stream ...

  5. SQL 关联外键报错类型不匹配

    如题,关联外键的时候,报错类型匹配.但是两个 类型都是int sql 如下: CREATE TABLE IF NOT EXISTS `alert_receiver_map` ( `id` INT UN ...

  6. oracle增加表空间大小

    第一步:查看表空间的名字及文件所在位置: select tablespace_name, file_id, file_name, round(bytes/(1024*1024),0) total_sp ...

  7. idea其他人把jar更新之后更新不到

    昨天下午开始就发现这个问题,其他同事把jar更新了之后,我一直获取不到更新之后的内容.尝试了很多方法,删除具体的更新不到的jar,一直不停的mvn clean install -U -Dmaven.t ...

  8. Sublime_SideBarEnhancements

    此插件可以实现对左边目录进行新建,删除文件,文件夹等操作.

  9. c# zxing生成二维码和打印

    生成二维码代码 asset=“要生成的字符串”: public static Bitmap CreateQRCode(string asset) { EncodingOptions options = ...

  10. [转]mysql使用关键字作为列名的处理方式

    转自:https://blog.csdn.net/xpnidaye/article/details/52388669 下面是一个创建表的语句,而其中key是一个关键字,所以不能直接写key. crea ...