Вот мой код:
AssetBundle ab = AssetBundle.LoadFromFile(Application.dataPath + "/uia.manifest");//get null here
AssetBundleManifest manifest = (AssetBundleManifest)ab.LoadAsset("AssetBundleManifest");
Вот мой код:
AssetBundle ab = AssetBundle.LoadFromFile(Application.dataPath + "/uia.manifest");//get null here
AssetBundleManifest manifest = (AssetBundleManifest)ab.LoadAsset("AssetBundleManifest");
Файл, который вам нужно загрузить в AssetBundle.LoadFromFile
, - это файл Assets
, который хранится в той же папке, что и ваш AssetBundle uia
. Этот Assets
файл получает то же имя, что и папка, в данном случае Assets
. Ваш код будет таким:
AssetBundle ab = AssetBundle.LoadFromFile(Application.dataPath + "/Assets");
AssetBundleManifest manifest = (AssetBundleManifest)ab.LoadAsset("AssetBundleManifest");
Взгляните на Использование 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, а не как конкретный файл в нем.
AssetBundle assetBundle = AssetBundle.LoadFromFile(Path.Combine(Application.dataPath, "uia"));
AssetBundleManifest manifest = assetBundle.LoadAsset<AssetBundleManifest>("AssetBundleManifest");
См. Также AssetBundle
Руководство.
«AssetBundle» может относиться к двум различным, но связанным между собой вещам.
Во-первых, это фактический файл на диске. Это называется архивом AssetBundle. Архив AssetBundle представляет собой контейнер, например папку, в которой хранятся дополнительные файлы.
манифест является частью этого архива и может быть загружен только путем загрузки AssetBundle и последующего получения из него манифеста!
.manifest
файл как Asset-bundle. Кстати, зачем вам загружать.manifest
файл? - person Ankit   schedule 20.01.2020