Ошибка Unity: .ctor (): тело метода пусто - PullRequest
0 голосов
/ 15 февраля 2019

Это дополнительный вопрос, исходящий из моего последнего вопроса о том, как читать и писать из потоков.Следующий код - лучший ответ оттуда:

    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: неверный код IL в System.Forms.SaveFileDialog: .ctor (): тело метода пусто

Есть идеи?Если вы хотите получить более подробную информацию, просто спросите.Я приложу все усилия, чтобы уточнить мою проблему.

РЕДАКТИРОВАТЬ

Кажется, исправлена ​​первая ошибка, но это обнаружило вторую, приняв проблему с увиденным оператором ifвыше:

NullReferenceException: ссылка на объект не установлена ​​для экземпляра объекта

1 Ответ

0 голосов
/ 15 февраля 2019
Для работы класса

SaveFileDialog требуется .NET Framework 1.1 или более поздняя версия, как указано на последней странице документации , на которую вы ссылались в исходном сообщении.

.NET Framework - одна из нескольких сред выполнения, предоставляемых в среде .NET.Проблема в том, что Unity не использует .NET Framework в качестве основной среды выполнения - он использует Mono , которая является более легкой и переносимой версией среды выполнения .NET, предназначенной для работы на нескольких платформах.Именно так Unity может выполнять код .NET / C # в iOS, Android, ПК, macOS и т. Д.

Таким образом, в принципе вы не можете использовать класс SaveFileDialog в Unity, не возиться с плагинами, которые предоставляют платформуспецифические реализации диалогового окна для сохранения файлов.Вам нужно было бы написать плагин, который мог бы получить доступ к этому классу, и даже тогда он мог бы выполняться только на платформах под управлением Windows, поскольку .NET Framework - это специфичная для Windows среда выполнения .NET .

...