2016-11-13 3 views
2

У меня есть программа, написанная в Unity с использованием C#, которая инициализирует новый StreamReader и переходит к чтению текстовых данных из текстового файла Я сохранил папку ресурсов Unity. Все работает нормально, когда я нажимаю игру в Unity - все работает, и текст читается и отображается отлично. Однако, когда я пытаюсь создать его, чтобы запустить его через эмулятор HoloLens (платформа: Windows Store, SDK: Universal 10, Build and Run On: Local Machine), я получаю ошибку: ошибка CS1503: аргумент 1: невозможно преобразовать от 'string' до 'System.IO.Stream'.Вопросы программы, идущие от Unity To HoloLens - Невозможно преобразовать из 'string' в 'System.IO.Stream'

Я не понимаю, почему эта ошибка даже появляется в первую очередь, поскольку конструктор StreamReader имеет перегрузку, которая принимает строковый параметр.

Мой код выглядит следующим образом:

string metadata = String.Format("/Resources/.../metadata.txt", list); 
if (File.Exists(Application.dataPath + metadata)) 
{ 
    using (StreamReader sr = new StreamReader(Application.dataPath + metadata)) 
      { 
        // .... 
      } 
} 
+1

Я могу только предположить, что нет перегрузки StreamReader, который принимает имя файла как параметр, но только тот, который принимает только поток – Steve

+0

. В нормальной системе System.IO.StreamReader существует перегрузка строк, это тот, который вы используете ? – XerShade

+0

Я верю, что использую перегрузку строки в обычном System.IO.StreamReader, поскольку Application.dataPath возвращает строку, а метаданные - это строка. Для правильной работы этого режима необходимо использовать «System.IO». Все компилируется и работает нормально, когда вы нажимаете кнопку воспроизведения через Unity; однако, пытаясь создать его как приложение для Windows, я получаю ошибки компиляции, указанные в вопросе. – whycodingsohard

ответ

3

Я согласен с другими, это, вероятно, связано с различием между моно в редакторе и .net, который вы компилируете, чтобы получить приложение UWP. Попробуйте это вместо:

using(StreamReader sr = new StreamReader(new FileStream(Application.dataPath + metadata, FileMode.Open))) 

Это должно быть юридический код моно и .net.

+0

Создание FileStream и использование этого для инициализации StreamReader. Я код в Visual Studio, и я думал, что все должно быть .NET. Я все еще не совсем уверен в том, что проблема, но спасибо за решение. Теперь моя программа теперь может создавать и развертывать эмулятор holoLens. – whycodingsohard

1

API-интерфейс отличается в некоторых случаях между Unity Mono и .NET на UWP. Возможно, в версии UWP отсутствует StrmReader (string) ctor.

Например, у меня был случай, когда Delegate.CreateInstance работает в редакторе, но не работает на Hololens и требует другой версии.

Вы можете обернуть вещи в макросы или использовать один UWP.

+0

Я кодирую визуальную студию C#, я не использую Monodevelop. – whycodingsohard

+1

Моно и MonoDevelop - это две разные вещи. Mono - это основа, которую вы используете в Unity, даже при использовании VS. MonoDevelop - это среда разработки, разработанная людьми, которые также разрабатывают среду Mono. Структура Mono - .NET 3.5 плюс некоторое добавление, в то время как UWP в VS (как только вы создали Unity и дважды щелкните по решению), это версия .NET UWP. Итак, более свежие с некоторыми ограничениями в доступных классах. – Everts

Смежные вопросы