需要实现一个unity打开文件/文件夹选择框,一开始使用:
path = UnityEditor.EditorUtility.OpenFilePanel("Load Images of Directory", UnityEngine.Application.dataPath, extion);
方法实现,但是这种方法只在编辑器里起作用,不能导出exe。
于是使用:
using System.Windows.Forms;
OpenFileDialog dialog = new OpenFileDialog();
dialog.Filter = "CX7 files (*.cx7)|*.cx7"; //过滤文件类型
dialog.Title = "选择待解密文件";
//string dir = Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory);
dialog.InitialDirectory = System.Windows.Forms.Application.StartupPath;
try{
if (dialog.ShowDialog() == DialogResult.OK){
path = dialog.FileName;
}
return path;
}
catch (Exception e){
resultPanel_go.SetActive(true);
resultPanel.Title.text = "打开文件失败";
resultPanel.path.text = e.Message;
throw new Exception(e.Message);
}
这段代码在Unity编辑器里运行良好,但是导出成exe后,就显示dialog.ShowDialog()空指针错误(Object reference not set to an instance of an object)。我想进入这个函数里看看,但是进不去啊,在网上查了很多方法都无效,最后翻墙,在外网上找到了答案(网页链接:https://www.tutorialfor.com/questions-317730.htm):
1. 从C: \ Program Files \ Unity \ Hub \ Editor \ 2019.x \ Editor \ Data \ MonoBleedingEdge \ lib \ mono \ unityjit 找 System.Windows.Forms.dll文件,放到Plugins文件夹下(之前都是在Unity安装路径下的2.0里找的.dll文件,这是出错的重要原因吧)
2. 将Project Settings>Player>Api Compatibility Level *设置为.NET 4.x
这样导出就没问题了。