Unity — Создание загрузки файла с удаленного ресурса URL

Кстати говоря, Вы можете сделать заказ у разработчика которого вы сейчас читаете, по любым вопросам с администрированием серверов, а также сайтами. Я помогу в любой задаче, оплата почасовая. Можете обратиться в Telegram для быстрой обратной связи, либо на почту которая на странице "Обо мне".

Дата публикации: 10.10.2018
Дата обновления: 17.12.2021

unity-developing-games-scripts-c-sharp-download-file-upload-file-remote-http-https

Подгрузка файлов в Unity играет ключевую роль, так как надо делать приложение которое весит 20МБ-40МБ, не более. Далее уже в фоновом режиме приложение должно начинать подгрузку нужных вам файлов и компонентов.

Включаем работу приложения в фоне, в главном событии Start() нашей сцены.

void Start () {
    Application.runInBackground = true;
}

Далее делаем уже подгрузку в нужной вам функции.

IEnumerator GetFile()
{
    // ссылка откуда качаем
    var wwwRequest = new UnityWebRequest("http://");
    wwwRequest.method = UnityWebRequest.kHttpVerbGET;
    // тут куда качаем наш файл в системе, обязательно использовать Application.persistentDataPath
    var dh = new DownloadHandlerFile(Application.persistentDataPath + "/audio.mp3");
    dh.removeFileOnAbort = true;
    wwwRequest.downloadHandler = dh;
    if(wwwRequest.isDone != true)
    {
        Debug.Log(wwwRequest.downloadProgress);
        Debug.Log(wwwRequest.isDone);
    }
    yield return wwwRequest.SendWebRequest();
    if (wwwRequest.isNetworkError || wwwRequest.isHttpError)
    {
        Debug.Log(wwwRequest.error);
    }
    else
    {
        Debug.Log("success");
    }
    
    yield return wwwRequest;
}

Вот и всё, теперь используем наш IEnumerator в функции.

public void publicToGetFile()
{
 StartCoroutine(this.GetFile());
}

И уже эту функцию вставляем в наш компонент допустим MainCamera, далее добавляем в Button (onClick) наш компонент MainCamera, выбираем функцию publicToGetFile.

По нажатию кнопки у нас происходит скачивание файла, причём не используйте WWW компонент, используйте UnityWebRequest который пришёл на замену, и имеет обход переполнения памяти на Android устройствах.

Кстати говоря, Вы можете сделать заказ у разработчика которого вы сейчас читаете, по любым вопросам с администрированием серверов, а также сайтами. Я помогу в любой задаче, оплата почасовая. Можете обратиться в Telegram для быстрой обратной связи, либо на почту которая на странице "Обо мне".