需求:给策划们写一个PC端(Window)的Excel导表工具。原本用OpenFile打开FileExplorerDialog后让他们本身选择想要添加的Excel文件就好了,结果有个需求是但愿能拖拽Excel文件直接添加进来,以为这样作更方便。git
桌面应用用winform和wpf来写的话,这个功能应该还挺好作,用Unity来作就比较蛋疼了。。。查了一下可能是调用win32的api。github
归纳一下,就是须要拖过文件管理器选文件,和经过鼠标拖拽的方式选中文件。macos
这个导表工具大体关键点是:windows
一、常规方式导入Excel文件。Unity中用UGUI拼好界面,作一个Item模板(可作为prefab预制体),点按钮打开FileExplorerDialog,多选Excel文件后按肯定,动态生成Item加入到ScrollView的Content下。要求ScrollView下的Content添加Content Size Fitter和Grid Layout Group组件。这种导入方式建议用Crosstale的FileBrowser插件(这里)。api
二、Window平台下用拖拽文件到app窗口中的方式添加文件。建议使用这个工具(这里),主要是C#调用win32的api。FileDragAndDrop.cs文件中有用法样例。稍微加一句MessageBox输出拖拽进app的文件路径: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。测试