Как получить единство актива? - PullRequest
0 голосов
/ 20 января 2020

enter image description here

Вот мой код:

AssetBundle ab = AssetBundle.LoadFromFile(Application.dataPath + "/uia.manifest");//get null here
AssetBundleManifest manifest = (AssetBundleManifest)ab.LoadAsset("AssetBundleManifest");

1 Ответ

0 голосов
/ 20 января 2020

Взгляните на Использование AssetBundles непосредственно , в частности, раздел Загрузка манифестов AssetBundle , где указано

Загрузка манифестов AssetBundle может быть невероятно полезной. Особенно при работе с зависимостями AssetBundle.

Чтобы получить пригодный для использования объект AssetBundleManifest, вам нужно загрузить этот дополнительный AssetBundle (тот, который назван так же, как папка, в которой он находится ) и загрузить из него объект типа AssetBundleManifest.

Загрузка самого манифеста выполняется точно так же, как и любого другого актива из AssetBundle:

AssetBundle assetBundle =  AssetBundle.LoadFromFile(manifestFilePath);
AssetBundleManifest manifest = assetBundle.LoadAsset<AssetBundleManifest>("AssetBundleManifest");

Хотя это не так если честно, хорошо документировано, в примерах AssetBundles.LoadFromFile видно, что они не загружают "Example.manifest" как AssetBundle, а скорее только "Example" без суффикса !

Так что в вашем случае он, похоже, помещен в Assets/uia, и вы бы загрузили этот архив как AssetBundle, а не как указанный файл c.

AssetBundle assetBundle =  AssetBundle.LoadFromFile(Path.Combine(Application.dataPath, "uia"));
AssetBundleManifest manifest = assetBundle.LoadAsset<AssetBundleManifest>("AssetBundleManifest");

Также см. AssetBundle Руководство

«AssetBundle» может относиться к двум различным, но связанным вещам.

Первый - это фактический файл на диске. Это называется архивом AssetBundle. Архив AssetBundle представляет собой контейнер, как папка, в которой содержатся дополнительные файлы .

→ Манифест является частью этого архива и может быть загружен только путем загрузки AssetBundle, а затем взять манифест из него!

...