Загрузка bundle

Форум для самых маленьких, а так же тех, кому недосуг читать справку самостоятельно.

Загрузка bundle

Сообщение Koss 04 мар 2023, 14:35

Всем не равнодушным привет. помогите, такая проблема:

игра >150мб, разбиваю на бандлы, загружаю их и .... в редакторе всё работает. (в бандлах сцены, эти сцены я вообще из проекта удалил, то есть загружаются именно бандлы).
Сделал aab, через google assets delivery, загрузил на плей маркет, бандлы не загружаются. Почему именно бандлы не загружаются, сделал такую проверку. cube исчезает, cube1 нет.

cube.active = false;
var BundleScOld = AssetBundle.LoadFromFile(Path.Combine("Assets/AssetBundles", "bunold"));
if (BundleScOld == null)
{
Debug.Log("Failed to load BundleScOld!");
return;
}
cube1.active = false;

Если у кого есть хотя бы мысли или идеи, пожалуйста поделитесь.
Koss
UNец
 
Сообщения: 11
Зарегистрирован: 10 май 2022, 21:04

Re: Загрузка bundle

Сообщение Koss 04 мар 2023, 16:07

Похоже после установки на андройд бандлов просто нет по адресу "Assets/AssetBundles".
Попробовал Application.streamingAssetsPath, тоже не работает.
Где хранятся андлы после установки? Как к ним прописать адрес?
Koss
UNец
 
Сообщения: 11
Зарегистрирован: 10 май 2022, 21:04

Re: Загрузка bundle

Сообщение Jarico 04 мар 2023, 17:38

Синтаксис:
Используется csharp

private static string BundlesDir = Path.Combine(Environment.CurrentDirectory, "Bundles");

[MenuItem("Asset Bundles/Build")]
static void BuildBundles()
{
    //создаём папку для бандлов если её нет
    //создаётся в папке проекта рядом с папкой Assets
    if(!Directory.Exists(BundlesDir))
    {
        Directory.CreateDirectory(BundlesDir);
    }
    BuildPipeline.BuildAssetBundles(BundlesDir, BuildAssetBundleOptions.None, BuildTarget.StandaloneWindows);
}
 


Чтобы в билд не попадали ассеты которые уже есть в бандлах указывай манифест в папке с бандлами при сборке, но чтобы указывать манифест тебе придётся написать свой сборщик или воспользоваться моим
Изображение
https://gist.github.com/redheadgektor/2a393806e62869485a91568049b9afef

Жмёшь галочку Use Asset Bundle Manifest и указываешь путь, если бандлы имеют сцены исключай их в моём сборщике
Github: _https://github.com/redheadgektor
Discord: Конь! Чаю!#9382 (сижу редко)
YouTube: _https://www.youtube.com/channel/UCPQ04Xpbbw2uGc1gsZtO3HQ
Telegram: _https://t.me/redheadgektor
Аватара пользователя
Jarico
Адепт
 
Сообщения: 1084
Зарегистрирован: 06 янв 2019, 17:37
Откуда: 0xDEAD
Skype: none
  • Сайт

Re: Загрузка bundle

Сообщение DbIMok 06 мар 2023, 03:53

там вся инструкция на одной странице. непонятно, почему вы прочитали как разбить пакет на части, но не прочитали как потом загрузить эти файлы (в зависимости от выбранного способа доставки)
например
Загрузить активы в память
После завершения запроса используйте одну из этих функций для загрузки ресурсов в память:
Используйте PlayAssetPackRequest.GetAssetLocation() , чтобы получить AssetLocation объект. Это обеспечивает путь, смещение и размер актива, чтобы его можно было загрузить с диска.
Если актив представляет собой AssetBundle, вы можете использовать удобный метод PlayAssetPackRequest.LoadAssetBundleAsync(assetPath). Путь ресурса, который вы передаете, должен соответствовать пути к AssetBundle из пакета ресурсов. Это вернет AssetBundleCreateRequest .
правильный вопрос - половина ответа. учитесь формулировать вопросы понятно.
Новости > _Telegram чат @unity3d_ru (11.6k/4.8k online) > _Telegram канал @unity_news (4.7k подписчиков) > Телеграм тема > "Спасибо"
Аватара пользователя
DbIMok
Адепт
 
Сообщения: 6372
Зарегистрирован: 31 июл 2009, 14:05

Re: Загрузка bundle

Сообщение Koss 17 мар 2023, 16:50

DbIMok писал(а):там вся инструкция на одной странице. непонятно, почему вы прочитали как разбить пакет на части, но не прочитали как потом загрузить эти файлы (в зависимости от выбранного способа доставки)
например
Загрузить активы в память
После завершения запроса используйте одну из этих функций для загрузки ресурсов в память:
Используйте PlayAssetPackRequest.GetAssetLocation() , чтобы получить AssetLocation объект. Это обеспечивает путь, смещение и размер актива, чтобы его можно было загрузить с диска.
Если актив представляет собой AssetBundle, вы можете использовать удобный метод PlayAssetPackRequest.LoadAssetBundleAsync(assetPath). Путь ресурса, который вы передаете, должен соответствовать пути к AssetBundle из пакета ресурсов. Это вернет AssetBundleCreateRequest .


Здравствуйте, ну ни как не получается. DbIMok, подскажите.
Изначально всё делал по другой справке. (https://docs.unity3d.com/Manual/AssetBundles-Workflow.html). То, что видовос и андройд в этом смысле(файловой системы) различаются узнал недавно.
Делаю со страницы, что вы оставили, но тоже не получается.


public void goScene()
{
PlayAssetBundleRequest bundleRequest = PlayAssetDelivery.RetrieveAssetBundleAsync("sceneassetbundle"); // sceneassetbundle имя bundle
AssetBundle assetBundle = bundleRequest.AssetBundle;

string[] scenePaths = assetBundle.GetAllScenePaths();
SceneManager.LoadScene(scenePaths[0]);

}

В sceneassetbundle две сцены. Пробовал scenePaths[0] и scenePaths[1]
Bundle хранятся в папке "Assets/AssetBundles". Эта папка добавлена в "Google --> Android App Bundle --> Asset Delivery Settings". Способ доставки стоит Install Time.

Уже руки опускаются, помгите пожалуйста. Где ошибка. Как загрузить сцену на андройд.

-----------------------------------------------------------------------------------------------------------------

Ещё пробовал вот так:

IEnumerator InstantiateObject()
{
string url = "file:///" + Application.dataPath + "/AssetBundles/" + "sceneassetbundle"; // sceneassetbundle имя bundle
var request
= UnityEngine.Networking.UnityWebRequestAssetBundle.GetAssetBundle(url, 0);
yield return request.Send();
AssetBundle bundle = UnityEngine.Networking.DownloadHandlerAssetBundle.GetContent(request);
SceneManager.LoadScene("old"); // old имя сцены
}

public void goScene()
{
StartCoroutine(InstantiateObject());
}
Koss
UNец
 
Сообщения: 11
Зарегистрирован: 10 май 2022, 21:04

Re: Загрузка bundle

Сообщение krauser0993 17 мар 2023, 17:56

сколько у тебя весит игра? сжимай до талого. у меня игра без сжатия выйдет на 500 мб примерно.
я ее с каждой обновой ужимаю неужимаемое)
krauser0993
UNITрон
 
Сообщения: 342
Зарегистрирован: 05 апр 2019, 15:17

Re: Загрузка bundle

Сообщение DbIMok 17 мар 2023, 19:39

у вас есть работающий билд под андроид? проблема в превышении размера 150 МБ?
если да, откройте Project Settings > Player выберите платформу Android
в разделе Publishing Settings отметьте флажком Split Application Binary
в разделе Other Settings снимите флажок с Warn about App Bundle size
теперь билд может быть больше 150 МБ и все работает как и раньше
правильный вопрос - половина ответа. учитесь формулировать вопросы понятно.
Новости > _Telegram чат @unity3d_ru (11.6k/4.8k online) > _Telegram канал @unity_news (4.7k подписчиков) > Телеграм тема > "Спасибо"
Аватара пользователя
DbIMok
Адепт
 
Сообщения: 6372
Зарегистрирован: 31 июл 2009, 14:05

Re: Загрузка bundle

Сообщение krauser0993 17 мар 2023, 21:23

DbIMok писал(а):у вас есть работающий билд под андроид? проблема в превышении размера 150 МБ?
если да, откройте Project Settings > Player выберите платформу Android
в разделе Publishing Settings отметьте флажком Split Application Binary
в разделе Other Settings снимите флажок с Warn about App Bundle size
теперь билд может быть больше 150 МБ и все работает как и раньше


о, потом как-нибудь проверю если все работает без нюансов заранее спасибо)
krauser0993
UNITрон
 
Сообщения: 342
Зарегистрирован: 05 апр 2019, 15:17

Re: Загрузка bundle

Сообщение Koss 21 мар 2023, 15:59

DbIMok писал(а):у вас есть работающий билд под андроид? проблема в превышении размера 150 МБ?
если да, откройте Project Settings > Player выберите платформу Android
в разделе Publishing Settings отметьте флажком Split Application Binary
в разделе Other Settings снимите флажок с Warn about App Bundle size
теперь билд может быть больше 150 МБ и все работает как и раньше

DbIMok, это действительно работает. Огромное спасибо. ++ в карму!!! Черт знает сколько времени с бадлами проковырялся... так и не разобрался как загружать, но оставим это на потом. Проблема решена, плей маркет игру принял. СПАСИБО!!!
:ymapplause: :ymapplause: :ymapplause: :ymapplause: :ymapplause: :ymapplause: :ymapplause: :ymapplause: :ymapplause: :ymapplause: :ymapplause: :ymapplause: :ymapplause:
Koss
UNец
 
Сообщения: 11
Зарегистрирован: 10 май 2022, 21:04


Вернуться в Почемучка

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 31