在unity编辑器中,导出/保存文件,使用EditorUtility.SaveFilePanel,代替运行时的方法。

2023-03-14,,

在项目中(运行时),已经有个功能是导出文件到本地磁盘,使用的方法是常见的DllImport("Comdlg32.dll")并进行封装。详情可参考:https://github.com/gkngkc/UnityStandaloneFileBrowser

后来,又出现了个需求,是在编辑器的编辑态中,增加一个导出文件到本地磁盘的功能给开发人员使用,就也沿用了上述封装给运行态使用的方法。

但是,导出完文件,再运行,会导致unity编辑器崩溃(版本2020.1.6f1)

报错信息如下,

Stack Trace of Crashed Thread 15968:
0x00007FFCEEDF2473 (combase) RoGetActivationFactory
0x00007FFCEEDF89B1 (combase) RoGetActivationFactory
0x00007FFCEEDF9AAB (combase) RoGetActivationFactory
0x00007FFCEEDF9CF3 (combase) CoCreateInstance
ERROR: SymGetSymFromAddr64, GetLastError: '试图访问无效的地址。

在网上查了一会儿,一头雾水,没弄明白是为什么。

但是好在发现项目中的一个插件也有类似功能,查看代码发现他用的是EditorUtility.SaveFilePanel

然后我就也改用这个方法,目前还没有崩溃的现象发生。

在unity编辑器中,导出/保存文件,使用EditorUtility.SaveFilePanel,代替运行时的方法。的相关教程结束。

《在unity编辑器中,导出/保存文件,使用EditorUtility.SaveFilePanel,代替运行时的方法。.doc》

下载本文的Word格式文档,以方便收藏与打印。