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.
这是一个跟进问题,来自
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.