Понедельник, 23 Декабря 2024, 00:18

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Результаты поиска
DevMac1Дата: Среда, 22 Января 2014, 17:10 | Сообщение # 1 | Тема: Проблемы со скачиванием файлов через WWW
был не раз
Сейчас нет на сайте
www.error содержит transfer closed with 7813050 bytes remaining to read (в принципе то же самое)

Вот на следующий день утром запустил снова, скачалось нормально, без ошибок! Пару раз помог перезапуск самого Unity! И в первый запуск приложения в UnityEditor все скачивается нормально, потом начинают лезть эти ошибки при каждой очередной попытке! Такое ощущение, что либо в Unity либо в классе WWW хранится какой-то кеш или еще что-то, который не всегда обнуляется и мешает!

Добавлено (22.01.2014, 11:38)
---------------------------------------------
Ввел дополнительно еще вот такую конструкцию для дебага

Код

while( !www.isDone )
{
      float progress = www.progress;
      Debug.Log ("Progress " + progress);
      yield return null;
}


В результате получилось, что все файлы скачиваются примерно на 20%-30%, посл чего происходит ошибка!

Добавлено (22.01.2014, 17:10)
---------------------------------------------
В общем, проблему свою решил! Хотя вернее сказать, просто ее обошел!

Пришла в голову мысль использовать следующую конструкцию do while

Код

do   
{
   WWW www = new WWW("http://someserver.com/package.zip");     
   while( !www.isDone )
   {
    float progress = www.progress;
    Debug.Log ("Progress " + progress);
    yield return null;
   }
   byte[] packagebytes = www.bytes;
}   
while (!String.IsNullOrEmpty(www.error));


Таким образом, я постоянно стучусь на сервер за файлом до тех пор, пока он не скачается без ошибок! Получилось обойти ошибку! Она все равно возникает, но на второй/третий запрос файл скачивается! Скорее всего проблемы с серваком или интернет соединением!


Сообщение отредактировал DevMac1 - Среда, 22 Января 2014, 17:11
DevMac1Дата: Вторник, 21 Января 2014, 19:26 | Сообщение # 2 | Тема: Проблемы со скачиванием файлов через WWW
был не раз
Сейчас нет на сайте
Нет, файлы удаляю перед каждым запуском! Но это не помогает!
DevMac1Дата: Вторник, 21 Января 2014, 12:00 | Сообщение # 3 | Тема: Проблемы со скачиванием файлов через WWW
был не раз
Сейчас нет на сайте
В общем, есть такой код для скачки файлов zip с сервера

Код

void SomeMethod()
{
               StartCoroutine (DownloadPackage());
}

IEnumerator DownloadPackage()
{
               WWW www = new WWW("http://someserver.com/package.zip");
               yield return www;
               byte[] packagebytes = www.bytes;
               File.WriteAllBytes("/SomeDirectory/package.zip",packagebytes);
}


В первый запуск код сработал нормально, паки скачались и записались на диск!
Но проблема в том, что после этого, когда я снова пытался запустить скрипт и скачать паки, каждый раз начала возникать ошибка

You are trying to load data from a www stream which had the following error when downloading.
transfer closed with N bytes remaining to read

К сожалению, я не имею доступа к настройкам сервера, так как им занимается другой человек, и не могу точно проверить его работу!
Но сами файлы через браузер с этого сервера качаются нормально и сервер работает!

Была мысль, что проблема в timeout в самом Unity! Но перечитав кучу доков, пришел к выводу, что таймаут класса WWW изменить нельзя и он зависит от платформы
(в данный момент провожу тестирование в Unity Editor, в дальнейшем игра будет работать на Android и IOS)

Буду очень благодарен, если вы подскажете, где еще может быть проблема и как ее решить! Возможно есть какие-то более удобные и лучшие способы скачки файлов из интернета, чем то, что я использую сейчас!


Сообщение отредактировал DevMac1 - Вторник, 21 Января 2014, 12:03
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг