【发布时间】:2019-02-14 21:01:51
【问题描述】:
这是一个后续问题,来自my last question,关于如何从流中读取和写入。以下代码是那里的最佳答案:
var byteData = Encoding.UTF8.GetBytes(data);
var saveFileDialog = new SaveFileDialog
{
DefaultExt = "json",
AddExtension = true,
Filter = "JSON|*.json"
};
if (saveFileDialog.ShowDialog() != DialogResult.OK ||
string.IsNullOrEmpty(saveFileDialog.FileName)) return;
using (var saveFileDialogStream = saveFileDialog.OpenFile())
{
saveFileDialogStream.Write(byteData, 0, byteData.Length);
}
给我这个的人确认它可以在 Unity 之外运行,但是当我尝试让它通过 Unity 运行时,它会引发以下错误:
InvalidProgramException:System.Forms.SaveFileDialog 中的 IL 代码无效:.ctor ():方法体为空
有什么想法吗?如果您想了解更多详细信息,请询问。我会尽力充实我的问题。
编辑
似乎修复了第一个错误,但这发现了第二个错误,与上面看到的 if 语句存在问题:
NullReferenceException:对象引用未设置为对象的实例
【问题讨论】:
-
answers.unity.com/answers/406235/view.html -- 可能与您的问题有关。
-
@Chris 通过我确实找到了似乎是一个解决方案,但我现在遇到了第二个错误,即与上述代码 sn-p 中的 if 语句相关的 NullReferenceException。知道是什么原因造成的吗?
-
那么,您是如何解决第一个问题的?我的猜测是你所做的任何事情都会导致
saveFileDialog成为null。 -
我重新导入了 System.Windows.Forms.dll,但我从 'C:\Program Files\Unity\Editor\Data\MonoBleedingEdge\lib\mono\2.0-api' 而不是 'C :\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v3.5\Profile\Client',所以可能是 api 版本的不同?
标签: c# unity3d .net-3.5 savefiledialog