Как получить доступ к файлам в вашей папке активов из развернутого приложения HoloLens?

#deployment #assets #hololens

#развертывание #ресурсы #hololens

Вопрос:

Итак, у меня есть пара файлов, которые мне нужно использовать в моем приложении. Оба являются файлами .nbin, связанными с NLP. Я сохранил их непосредственно в своей папке assets, не используя в ней никаких подкаталогов. (…/Assets/EnglishTOK.nbin)

Теперь я использую приложение.DataPath для получения доступа к папке assets без указания абсолютного пути на моем компьютере (работает). Но после того, как я разверну его в HoloLens, я получаю следующую ошибку.

Исключение FileNotFoundException C:DataUsersDefaultAccountAppDataLocalDevelopmentFilesTemplate3DVS.Release_Win32.DineshDataEnglishTok.nbin

и показан указанный выше путь. Будучи новичком, я не могу отладить проблему.

1) Как мне получить доступ к этим файлам?

2) Если этот процесс некорректен, есть ли какой-либо другой способ включения файлов в мое приложение? (Не создавать новые, а использовать существующие)

3) Если я загружаю файлы с портала устройств Windows, где я должен разместить эти файлы? Как мне получить к ним доступ? Необходимо указать какие-либо новые пути?

Спасибо за ваше время.!

Редактировать: 1. Чтобы использовать видео / аудио / графические файлы на вашем устройстве, используйте папку Assets / StreamingAssets для размещения этих файлов. Используйте Application.streamingAssetsPath, чтобы получить путь к этой папке.

  1. Чтобы использовать папку Assets, приведенный ответ работает нормально.

Ответ №1:

Вы захотите создать папку с именем Resources внутри папки Assets и поместить туда свои файлы. Затем вы загружаете свой файл, используя что-то вроде:

 TextAsset asset = Resources.Load("myfile.bytes"); 
  

Возможно, вы захотите изменить расширение файла на такое, которое распознает Unity, например ‘.bytes’ или ‘.txt’, чтобы избежать проблем с сериализацией. Для получения дополнительной информации о загрузке ресурсов см.https://docs.unity3d.com/560/Documentation/Manual/LoadingResourcesatRuntime.html

Что касается вашего последнего вопроса, вы можете получить доступ к файлам с портала устройств Windows, но затем они должны быть размещены в пользовательских папках LocalAppData your-app LocalState

Затем их можно извлечь, загрузив содержимое в виде потока файлов:

 filename = "yourfile.bytes";
string streamstring = null;
if (File.Exists(Application.persistentDataPath   "/"   filename))
{
    FileStream fs = new FileStream(Application.persistentDataPath   "/"   filename, FileMode.Open);
    byte [] bytes = new byte [fs.Length];
    fs.Read(bytes, 0, (int) fs.Length);
    streamstring = Encoding.UTF8.GetString(bytes);
    fs.Dispose();
}
  

Комментарии:

1. Есть ли какой-либо способ, которым я могу работать с файлами других типов (скажем, .mp4 или .jpg)?

2. В качестве альтернативы вы можете использовать StreamingAssets . Особенно для файлов, отличных от Unity, как в вашем случае, это кажется проще. Ресурсы предпочтительны для всех видов ресурсов, таких как тесты, изображения, аудио.

3. Спасибо вам обоим. Теперь мой проект завершен благодаря обоим вашим советам.