UnityWebRequest для UnityEngine.ResourceRequest? - PullRequest
0 голосов
/ 29 марта 2019

Я застрял при обновлении моего кода для Resource (AssetBundles) Updater / Manager.Я использую класс WWW, который устарел / устарел, и с UnityWebRequest я не могу понять, как заставить этот код работать снова:

   public IEnumerator LoadByWWWAsync(string url, WWWLoadCallBack callback)
    {
        WWW www = new WWW(url);
        LoadState loadState = new LoadState();
        while (!www.isDone)
        {

            loadState.UpdateProgress(www);
            callback(loadState, www);

            yield return 0;
        }

        loadState.UpdateProgress(www);
        callback(loadState, www);
    }

И он вызывает:

public void UpdateProgress(ResourceRequest resourceRequest)
{
    isDone = resourceRequest.isDone;
    progress = resourceRequest.progress;
}

Обычно этовыглядит так: enter image description here

Но с UnityWebRequest это выглядит так: enter image description here

И я не нашел ни одной статьи в их документацииоб этом случае.Также выкопайте весь API для UnityWebRequest и ResourceRequest и не нашли ничего о том, как преобразовать / привести это, как это уже сделали WWW.Может кто знает решение?

1 Ответ

1 голос
/ 29 марта 2019

Как показывает ошибка, ваш метод принимает только ResourceRequest в качестве параметра, а не UnityWebRequest.

Кроме явно WWW UnityWebRequest не наследуется от ResourceRequest.

Изменить это просто, поскольку существует UnityWebRequest.downloadProgress

Измените его на

public void UpdateProgress(UnityWebRequest www)
{
    isDone = www.isDone;
    progress = www.downloadProgress;
}

Примечание:

Я также не вижу, где вы на самом деле начинаете отправку запроса, поэтому никакого прогресса не будет:

www.SendWebRequest();

Чем вы можете использовать

var www = new UnityWebResquest(URL);

, но имейте в виду, что это общий запрос, и вам придется добавить такие вещи, как DownloadHandler, UploadHandler и т. Д., А также определить тип (см. UnityWebRequest )

В вашем случае я бы лучше использовал UnityWebRequest.Get , который автоматически добавляет необходимые обработчики и т. Д. Unity также рекомендует использовать его с using

using(var www = UnityWebRequest.Get(URL)
{
    www.SendWebRequest();
    while(!www.isDone){
    ...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...