Невозможно прочитать файл в Hololens - PullRequest
0 голосов
/ 06 апреля 2020

Я работаю над приложением, которому нужно читать файлы формата .obj в hololens во время выполнения.

Точно, я хочу сохранить файл .obj в hololens, когда приложение работает, он должен получить доступ к файлу через файловую систему hololens. Поместить файл в папку активов и загрузить с помощью редактора Unity - это не то, что мне нужно.

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

Соответствующие части моей программы следующие:

В заголовке файла сценария импортируйте пространство имен

    #if WINDOWS_UWP
    using Windows.Storage;
    using Windows.Storage.Pickers;
    using System.Threading.Tasks;
    #endif

Сценарий который загружает файл obj получает параметр типа потока. Поэтому я реализую эту функцию "OpenFileForRead", которая получает путь к папке и имя файла в качестве параметра, возвращает поток файла.

    private static Stream OpenFileForRead(string folderName, string fileName)
    {
        Stream stream = null;
#if WINDOWS_UWP
        Task task = new Task(
        async () => {
            StorageFolder folder = await StorageFolder.GetFolderFromPathAsync(folderName);
            StorageFile file = await folder.GetFileAsync(fileName);
            stream = await file.OpenStreamForReadAsync();
        });
        task.Start();
        task.Wait();
#endif
        return stream;
    }

И я вызываю эту функцию следующим образом:

#if WINDOWS_UWP
        string objname = "Model.obj";
        Stream stream = OpenFileForRead(ApplicationData.Current.RoamingFolder.Path, objname);
        loadedObj = new OBJLoader().Load(stream);
#endif

«ApplicationData.Current.RoamingFolder.Path» сопоставляется с «LocalAppData \ SOMEAPP \ RoamingState» в гололинах.

Поэтому, когда я развернул это приложение в hololens, я буду загружать файл «Model.obj» на портале устройства в папку RoamingState этого приложения. Затем я запускаю это приложение, в идеальных условиях оно должно работать, к сожалению, это не так.

В настоящее время ситуация может быть успешно развернута в приложении hololens и запущена. Другие Gameobjects могут нормально функционировать в hololens, хотя он не может загрузить файл .obj в сцену.

Кстати, "new OBJLoader (). Load (stream);" был протестирован в Unity Editor, который могу успешно прочитать и загрузить файл .obj в локальную папку на моем P C. Поэтому, скорее всего, проблема заключается в том, как я читаю файлы в гололинзе. Но я, конечно же, следую решениям, данным в других похожих темах. Я запутался и не знаю, что именно не так?

Вот некоторые сайты, на которые я ссылался и скопировал некоторые коды:

https://longqian.me/2017/02/08/hololens-file-transfer/

https://forums.hololens.com/discussion/1862/how-to-deploy-and-read-data-file-with-app

https://github.com/Maximilian-Winter/ObjHololensViewer

https://github.com/jmher019/Hololens-OBJRenderer

Почти все выше, используйте аналогичные коды для чтения файлов в hololens, хотя я не могу получить их на своем устройстве, это так расстраивает!

Untiy Editor: 2018.4.0f1

Hololens: 1st gen

1 Ответ

0 голосов
/ 06 апреля 2020

У меня раньше было несколько проблем с Hololens (v1) и Unity при чтении данных. Мне потребовалось возраст , чтобы выяснить причину ... особенно, когда я обнаружил, что это ошибка в Unity. Я проверил свои старые сообщения на форуме, и у вас есть версия Unity, которая все еще страдает от этого.

См .: https://forum.unity.com/threads/how-to-access-files-folders-on-hololens-with-il2cpp.543022/

Обратите внимание, что человек из Unity ( почти последний пост) говорит:

Да, я делаю. Исправление приземлилось до 2019.1.8f1 и 2018.4.3f1 . Он еще не приземлился до 2019.2 или 2019.3.

Вы просто немного позади этого. Я бы сделал резервную копию вашего проекта и попробую установить новый Unity. Я помню, я также страдал от проблем после обновления, когда все инструменты Visual Studio снова работали должным образом (что связано с версиями Win10 SDK?).

Наконец, мне пришлось изменить разрешения в файле манифеста XML, поскольку Unity не добавляла надлежащие разрешения даже при изменении его в настройках приложения. К сожалению, я не могу вспомнить, что именно, и не могу достичь этого проекта прямо сейчас из-за работы на дому.

Редактировать: Я нашел ссылку на исправление в примечаниях к выпуску 2019.1. Я не смог найти его в 2018.x:

https://unity3d.com/unity/whats-new/2019.1.8:

Универсальный Windows Платформа: Исправлено, что System.IO API не работают для файлов вне приложений и каталогов AppData на сервере сценариев IL2 CPP. (1063768, 1156200)

И фактическая проблема эмитента:

https://issuetracker.unity3d.com/issues/uwp-il2cpp-file-dot-exists-method-returns-false

Я думаю, что это, вероятно, и ваша проблема.

...