Использование пакетов ресурсов Unity 3D на Hololens из папок устройства - PullRequest
1 голос
/ 28 мая 2019

Мы создаем приложение Hololens, которое будет использовать пакеты ресурсов из папок устройства, но мы получаем ошибку «Невозможно открыть файл архива» при попытке загрузить файлы пакета.

Поскольку у нас нет большого опыта работы с комплектами ресурсов, мы начали это с создания очень простого файла комплекта (всего несколько примитивов и материалов Unity), и мы сделали первую попытку загрузки их в приложение из Unity.редактор.Это работает, как и ожидалось, но не работает, когда мы внедряем приложение в нашу Hololens.

Это наш метод загрузки:

#if WINDOWS_UWP
    public async void CallForBundles()
#else
    public void CallForBundles()
#endif
    {
        string bundleFile = "--- NO BUNDLE ---";
#if UNITY_EDITOR
        bundleFile = @"D:\temp\UnityBuilds\AssetBundles\exportablebundle";
#endif
#if WINDOWS_UWP
        Windows.Storage.StorageFolder objectsFolder = Windows.Storage.KnownFolders.Objects3D;
        Windows.Storage.StorageFile bundleFilePointer = await objectsFolder.GetFileAsync("exportablebundle");
        bundleFile = bundleFilePointer.Path;
#endif

        var myLoadedAB = AssetBundle.LoadFromFile(bundleFile);
        //instante bundle components from myLoadedAB//
    }

Как вы видите, это очень просто.Мы находим путь пакета различными способами в зависимости от платформы (мы уже использовали эту систему для текстовых файлов, pngs и других), и сторона UNITY_EDITOR работает.WINDOWS_UWP выдает эту ошибку только при вызове AssetBundle.LoadFromFile (bundleFile);:

Unable to open archive file: C:/Data/Users/edata/3D Objects/exportablebundle

(Filename: C:\buildslave\unity\build\Runtime/VirtualFileSystem/ArchiveFileSystem/ArchiveStorageReader.cpp Line: 542)


'Holoplan.exe' (CoreCLR: CoreCLR_UWP_Domain): Loaded 'C:\Data\Users\DefaultAccount\AppData\Local\DevelopmentFiles\HoloplanVS.Release_x86.jalfonso\System.Diagnostics.StackTrace.dll'. Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
NullReferenceException: Object reference not set to an instance of an object.
at GameManager.<CallForBundles>d__1.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.AsyncMethodBuilderCore.<>c.<ThrowAsync>b__6_0(Object state)
at UnityEngine.UnitySynchronizationContext.WorkRequest.Invoke()
at UnityEngine.UnitySynchronizationContext.Exec()
at UnityEngine.UnitySynchronizationContext.ExecuteTasks()
at UnityEngine.UnitySynchronizationContext.$Invoke1(Int64 instance, Int64* args)
at UnityEngine.Internal.$MethodUtility.InvokeMethod(Int64 instance, Int64* args, IntPtr method) 

(Filename: <Unknown> Line: 0)

"Невозможно открыть файл архива: C: / Data / Users / edata / 3D Objects /exportablebundle "

, похоже, та же самая ошибка, которая возникает, когда приложение пытается загрузить файл с неправильным именем файла или путем, даже при работе в редакторе, поэтому по какой-то причине это выглядит так" AssetBundle.LoadFromFile 'не может найти файл de.Мы проверили файл bundleFile в этой строке, и он содержит правильный путь к файлу («C: \ Data \ Users \ edata \ 3D Objects \ exportablebundle», где «exportablebundle» - это имя файла пакета), поэтому мы предполагаем, что «AssetBundle.LoadFromFile» имеетпроблемы при чтении из локальной папки Hololens, но мы не очень понимаем, как решить эту проблему.

¿Кто-нибудь может нам помочь, пожалуйста?

EDIT-

Мы строим наш комплект ресурсов с примером кода из руководства Unity в разделе «Рабочий процесс комплекта активов».Похоже на это:

static void BuildAllAssetBundles(){
  string assetBundleDirectory = "Assets/AssetBundles";
  if (!Directory.Exists(assetBundleDirectory)){
    Directory.CreateDirectory(assetBundleDirectory);
  }

  BuildPipeline.BuildAssetBundles(assetBundleDirectory, BuildAssetBundleOptions.None,  BuildTarget.StandaloneWindows);
}

'StandaloneWindows' как цель сборки кажется наиболее близкой к гололенам из доступного списка, поэтому мы пошли на это.

1 Ответ

2 голосов
/ 29 мая 2019

Извините, в настоящий момент пакет устройств не работает на устройствах HL.Это известная проблема, которая должна быть исправлена.

...