Я загружаю наборы активов с помощью метода UnitywebRequest из HTTPS, однако UnityWebRequest.SendWebRequest, похоже, не торопится, чтобы фактически начать получать любые данные.
public static IEnumerator DownloadMenuAssetBundle(string fileName)
{
string path = Path.Combine(Globals.Platform, fileName);
UnityWebRequest www = new UnityWebRequest(FileManager.RequestFile(path));//this returns the complete url to the bundle e.g https://mywebsite.com/unity/myBundle
www.downloadHandler = new DownloadHandlerBuffer();
www.SendWebRequest();
while (!www.isDone)
{
Debug.Log("response: " + www.responseCode);
if (www.isNetworkError)
{
Debug.Log(www.error);
}
Debug.Log("downloaded:" + www.downloadedBytes);
yield return null;
}
Debug.Log("downloaded bytes: " + www.downloadedBytes);
Debug.Log("final response:" + www.responseCode);
if (www.error != null)
{
Debug.LogError("Encountered error while downloading: <color=blue>" + fileName + "</color>: " + www.error);
}
else
{
//rest of the logic, this works
}
Debug.Log("response: " + www.downloadedBytes);
вернет 0
дляслучайное количество времени (от нескольких до нескольких минут).Но www. isNetworkError
никогда не срабатывает, и как только байты начнут поступать, он загрузит все это за пару миллисекунд.
Раньше я использовал тот же сценарий на http-сервере, и он работал без сбоев без каких-либо задержек, но как только я переключился на https, это заняло некоторое время.Задержка также не происходит в редакторе (Unity version 2017.2.1f1 runtime версия .net 3.5 с совместимостью api 2.0 subset), но происходит на всех моих мобильных устройствах (Oneplus 3, Samsung Galaxy S8, Samsung Galaxy S6).
Сначала www.responseCode
вернул 301 Moved Permanently
, я решил эту проблему, используя новый URL-адрес https вместо http-адреса, надеясь, что это исправит это.Однако это не так, и теперь я получаю только 200 OK
.
Это также противоречивая проблема, потому что время, которое она занимает, не всегда одинаково, и даже не происходит постоянно (но чаще всеговремени)
Может ли это быть проблемой из-за того, что уровень безопасности требует дополнительного времени или сервер не торопится с ответом?если это проблема, как бы я мог отследить это (хотя я сомневаюсь, что это хорошо работает в редакторе)?
РЕДАКТИРОВАТЬ: обходной путь Я обошел проблему с помощьюWWW
класс вместо UnityWebRequest
.задержка полностью исчезла, но проверка SSL-сертификата не выполняется, так как Unity, по-видимому, запрещает их по умолчанию.Я бы не назвал это исправлением, но пока работает.