unity使用 form.showDialog() 函数,打包后出现空指针错误 的解决方法

需要实现一个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

这样导出就没问题了。

 

 

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值