Загрузка AssetBundles в Unity

255
26 июля 2021, 12:00

Для загрузки дополнений в игре использую assetbundles, которые лежат на хостинге. У меня на всех моих устройствах все работает отлично, но вот некоторые пользователи не могут загрузить совсем ничего. Причем я попросил одного из них скачать файлик дополнения по прямой ссылке в браузере и у него все скачалось, но в приложении постоянно выскакивает ошибка. Может кто знает с чем это может быть связано?

private IEnumerator LoadBundleFromServer(int addonId, Action<AssetBundle, int, Hash128> response, Action<float> progress)
{
    while (!Caching.ready)
    {
        yield return null;
    }
    //Check available space
    int spaceAvailable = DiskUtils.CheckAvailableSpace();
    if (spaceAvailable < MaxSpaceForDownloading) {
        LoadingError(2);
        Debug.LogErrorFormat("Not enough space");
        yield break;
    }
    //Check version
    var request = UnityWebRequest.Get(GetUrlOfBundle(addonId, 1));
    yield return request.SendWebRequest();
    Hash128 version = new Hash128();
    if (!request.isHttpError && !request.isNetworkError)
    {
        version = Hash128.Parse(request.downloadHandler.text.ToString().Trim());
    }
    request.Dispose();
    if (!version.isValid) {
        LoadingError(1);
        Debug.LogErrorFormat("error request version");
        yield break;
    }
    Debug.Log("Version to download - " + version);

    //Start downloading
    UnloadCurrentAssetBundle();
    if (!Caching.ClearAllCachedVersions(GetUrlOfBundle(addonId, 2))) {
        LoadingError(1);
        yield break;
    }
    string url = GetUrlOfBundle(addonId, 0);
    request = UnityWebRequestAssetBundle.GetAssetBundle(url, version);
    request.SendWebRequest();
    while (!request.isDone)
    {
        progress(request.downloadProgress);
        yield return null;
    }
    progress(1f);
    if (!request.isHttpError && !request.isNetworkError)
    {
        UnloadCurrentAssetBundle();
        response(DownloadHandlerAssetBundle.GetContent(request), addonId, version);
    }
    else
    {
        LoadingError(1);
        Debug.LogErrorFormat("error request [{0}, {1}]", url, request.error);
        yield break;
    }
    request.Dispose();
}
Answer 1

Дело было в том, что у меня ссылка была http и на версиях андроид 9 и выше выскакивала ошибка при загрузке. С https все работает отлично

READ ALSO
Unity появление текста при наведении на кнопку

Unity появление текста при наведении на кнопку

Я делаю специальный интерфейс и добавляю кнопки, мне нужно чтобы при наведении на кнопку в определенном месте показывался мой текстПодскажите...

390
Правильная обработка всех исключений

Правильная обработка всех исключений

В методе OnStartup определяю следующий код:

100
Остановка System.Threading.Timer

Остановка System.Threading.Timer

Возможно очень глупый вопрос от новичкаБуду рад прочесть все что скинете

191
Генерация паролей

Генерация паролей

Есть алфавит

224