这是一个后续问题,来自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:对象引用未设置为对象的实例
答案 0 :(得分:0)
SaveFileDialog
类需要.NET Framework 1.1或更高版本才能运行,如原始帖子中documentation you have linked to末页所指出的那样。
.NET Framework 是.NET环境中提供的几种运行时之一。问题是:Unity 不使用.NET Framework 作为其主要运行时-它使用 Mono ,它是.NET运行时的轻便可移植版本,旨在在多个环境中运行平台。这就是Unity能够在iOS,Android,PC,macOS等系统中执行.NET / C#代码的方式。
因此,基本上,您不能在Unity中使用SaveFileDialog
类,而不能弄乱为平台提供用于保存文件的对话框的特定实现的插件。您将不得不编写一个可以访问该类的插件,即使那样,它也只能在基于Windows的平台上执行,因为 .NET Framework是Windows特定的.NET运行时