Unity Error: .ctor(): method body is empty

Unity Error: .ctor(): method body is empty

这是一个跟进问题,来自 关于如何从流中读取和写入的问题。下面的代码是那里的最佳答案:

    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: Invalid IL code in System.Forms.SaveFileDialog: .ctor (): method body is empty

有什么想法吗?如果您想了解更多详情,请询问。我会尽力充实我的问题。

编辑

似乎修复了第一个错误,但这发现了第二个错误,与上面看到的 if 语句有关:

NullReferenceException: Object reference not set to an instance of an object

SaveFileDialog class 需要 .NET Framework 1.1 或更高版本才能 运行,正如您在 documentation you have linked to 的末尾指出的那样 post.

.NET Framework 是 .NET 环境中提供的几个 运行 之一。问题是:Unity 不使用 .NET Framework 作为它的主要 运行time - 它使用 Mono,这是一个更轻巧便携的.NET 运行 版本,旨在 运行 在多个平台上。这就是 Unity 能够在 iOS、Android、PC、macOS 等

中执行 .NET/C# 代码的方式

所以基本上你不能在 Unity 中使用 SaveFileDialog class 而不乱用插件,这些插件提供了用于保存文件的对话框的特定于平台的实现。您将不得不编写一个可以访问 class 的插件,即使那样,它也只能在基于 Windows 的平台上执行,因为 .NET Framework 是一个Windows-特定 .NET 运行time.