#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, чтобы получить путь к этой папке.
- Чтобы использовать папку 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. Спасибо вам обоим. Теперь мой проект завершен благодаря обоим вашим советам.